一.Java HashSet介绍
Java中的HashSet实现了Set接口,即它不允许重复。它由HashMap 内部支持,它基于散列原理工作。
我们可以在HashSet中存储一个 空值。其默认容量为16,负载系数为0.75,其中:
Load factor = Number of Stored Elements / capacity
Java HashSet是非同步的也就是说是非线程安全的。此外,无法保证保留元素的插入顺序。
在本教程中,我们将学习如何使用Java HashSet。
二.HashSet实例化
我们可以使用以下构造函数之一创建Java HashSet:
HashSet() // default capacity of 16 with a load factor of 0.75
HashSet(int initialCapacity)
HashSet(int initialCapacity, float loadFactor)
HashSet(Collection c)
这些构造函数中的每一个都非常直观。
让我们使用默认构造函数快速创建一个HashSet:
Set<Integer> set = new HashSet<>();
三.HashSet常用方法
现在让我们看一些可以帮助我们操作Java HashSet的方法:
1.add并返回Boolean值
如果不存在,它只是向给定集添加一个元素。如果元素已经存在,add()只返回false
System.out.println(set.add(1)); //true
System.out.println(set.add(2)); //true
System.out.println(set.add(3)); //true
System.out.println(set.add(1)); //false - as already present
//Note that the order of elements isn't guaranteed
System.out.println(set); //[1, 2, 3]
2. boolean contains(Object obj)
如果hashset中存在指定元素,contains()方法返回true
System.out.println(set.contains(1)); //true
System.out.println(set.contains(4)); //false
3. boolean remove(Object obj):
顾名思义,它会删除元素obj(如果存在)并返回true。如果不存在这样的元素,它只返回false
System.out.println(set.remove(1)); //true
System.out.println(set.remove(4)); //false
4. boolean isEmpty()
它为空集返回true,否则返回false:
System.out.println(set.isEmpty()); // false
5. int size()
它只返回给定集合中存在的元素数量
6. void clear()
clear()方法删除引用集中存在的所有值,从而使其成为空集。
三.HashSet内部实现
HashSet的内部使用一个HashMap中存储它的元素。存储在HashSet中的元素被映射为HashMap中的键。所有这些条目的值字段包含一个常量PRESENT:
private static final Object PRESENT = new Object();
这是一个虚拟对象
迭代HashSet:
我们可以使用以下方法之一迭代HashSet中的元素:
1. forEach():
从Java 8开始,我们可以使用forEach()迭代任何Java Collection:
set.forEach(e -> System.out.println(e));
2. forEachRemaining()
Java 8还支持forEachRemaining()构造,以便与Collection上的任何迭代器一起使用:
Iterator<Integer> itr = set.iterator();
itr.forEachRemaining(e -> System.out.println(e));
3.使用迭代器迭代
如果我们使用的是Java 7或更低版本,我们可以简单地使用迭代器进行迭代:
Iterator<Integer> itr = set.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
4.扩展的循环
我们还可以使用扩展的for循环来遍历元素
for(Integer e : set) {
System.out.println(e);
}
四.总结
在本教程中,我们学习了如何创建和使用Java HashSet。我们也知道Java HashSet内部使用HashMap来实现它。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/243601.html