要了解一个类,我们要了解三点,首先是这个类在哪个包下,其次是这个类的构造方法,最后是这个类的实例方法。接下来我们就按照这个步骤来了解HashSet类。
HashSet简述
HashSet所在包
HashSet继承了Set接口,由哈希表支持,不允许有重复元素。他不保证set的迭代顺序:特别是它不保证该顺序恒久不变,此类允许使用null元素。
HashSet是java.util中的一个类。初始化时,要先导入java.util.HashSet包。
//定义一个HashSet集合
HashSet<String> hashSet = new HashSet<>();
//String表示hashSet集合中存放的是String类型的数据,可以根据需要来更改,但必须是引用类型。
HashSet构造方法
HashSet有四个构造方法。
HashSet() 构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。
//默认构造器
map = new HashMap<>();
HashSet(Collection<? extends E> c) 构造一个包含指定 collection 中的元素的新 set。
//将传入的集合添加到hashSet中
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
HashSet(int initialCapacity) 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。
//指定初始容量
map = new HashMap<>(initialCapacity);
HashSet(int initialCapacity, float loadFactor) 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。
//指定初始容量和加载因子
map = new HashMap<>(initialCapacity, loadFactor);
通过上面代码我们可以看出,HashSet实际上是个“中间商”,接到活之后都交给了HashMap来处理。
HashSet的方法
| boolean | add(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。 |
|---|---|
| void | clear() 从此 set 中移除所有元素。 |
| boolean | contains(Object o) 如果此 set 包含指定元素,则返回 true。 |
| Iterator | iterator() 返回对此 set 中元素进行迭代的迭代器。 |
| boolean | remove(Object o) 如果指定元素存在于此 set 中,则将其移除。 |
| int | size() 返回此 set 中的元素的数量(set 的容量)。 |
表格中是一些常用的方法,HashSet和继承了很多方法,这里不能一一细说,大家使用时可以查阅API文档了解具体使用方法,
来看一下具体使用,方便大家理解。
public class Test {
public static void main(String[] args) {
HashSet<String> hashSet = new HashSet<>();
//在HashSet中添加元素
hashSet.add("吴亦凡");
hashSet.add("李小璐");
hashSet.add("迪丽热巴");
hashSet.remove("吴亦凡");
//contains方法
if(hashSet.contains("迪丽热巴")){
System.out.println("********");
}
//迭代器iterator
Iterator iter = hashSet.iterator();
while(iter.hasNext()){
String next = (String) iter.next();
System.out.println(next);
}
hashSet.clear();
}
}
以上就是我对HashSet的一些理解,如有不对,欢迎掘友们留言指正。