此类实现Set
接口,由哈希表(实际上是HashMap
实例)支持。它不能保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。该类允许null
元素。此类未同步。但是它可以像这样明确地同步:Set s = Collections.synchronizedSet(new HashSet(...));
关于HashSet
的注意事项:
HashSet
不维护任何顺序,元素将以任何随机顺序返回。HashSet
不允许重复。如果您尝试在 HashSet 中添加重复元素,则旧值将被覆盖。HashSet
允许空值,但是如果插入多个空值,它仍然只返回一个空值。HashSet
是非同步的。- 这个类返回的迭代器是快速失败的,这意味着如果在创建迭代器之后修改了
HashSet
,迭代器会抛出ConcurrentModificationException
,除了迭代器自己的remove
方法之外。
HashSet
示例
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[]) {
// HashSet declaration
HashSet<String> hset =
new HashSet<String>();
// Adding elements to the HashSet
hset.add("Apple");
hset.add("Mango");
hset.add("Grapes");
hset.add("Orange");
hset.add("Fig");
//Addition of duplicate elements
hset.add("Apple");
hset.add("Mango");
//Addition of null values
hset.add(null);
hset.add(null);
//Displaying HashSet elements
System.out.println(hset);
}
}
输出:
[null, Mango, Grapes, Apple, Orange, Fig]
如您所见,输出中不存在所有重复值,包括重复的空值。
HashSet
方法:
boolean add(Element e)
:它将元素 e 添加到列表中。void clear()
:它从列表中删除所有元素。Object clone()
:此方法返回HashSet
的浅表副本。boolean contains(Object o)
:它检查指定的Object o
是否存在于列表中。如果找到该对象,则返回true
,否则返回false
。boolean isEmpty()
:如果Set
中没有元素,则返回true
。int size()
:它给出了一个Set
的元素个数。boolean(Object o)
:它从Set
中删除指定的Object o
。