目录
public HashSet(Collection c):通过集合初始化
public HashSet(int initialCapacity):有HashMap内数组初始长度的构造
public HashSet(int initialCapacity, float loadFactor):有HashMap内数组初始长度和加载因子的构造
HashSet(int initialCapacity, float loadFactor, boolean dummy):有HashMap内数组初始长度和加载因子的构造,dummy没用上
public void clear():清理,把HashMap数组所有值置空
public Object clone():克隆权限的set
public boolean contains(Object o):包含元素
public boolean remove(Object o):移除对象o
public Spliterator spliterator():并行执行而设计的迭代器
存储特点:无序,不重复
底层原理:基于HashMap
变量:
private transient HashMap<E,Object> map; | 存储数据的hashMap |
private static final Object PRESENT = new Object(); | 伪值,以便与后备映射中的对象相关联 |
构造函数
HashSet():仅初始化内部HashMap
public HashSet(Collection<? extends E> c):通过集合初始化
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("a");
//通过set初始化
HashSet<String> strings = new HashSet<>(set);
System.out.println(strings);
//通过list初始化
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
HashSet<String> t = new HashSet<>(list);
System.out.println(t);
}
}
结果:
[a, b, c, d]
[1, 2, 3]
public HashSet(int initialCapacity):有HashMap内数组初始长度的构造
详见HashMap构造
public HashSet(int initialCapacity, float loadFactor):有HashMap内数组初始长度和加载因子的构造
HashSet(int initialCapacity, float loadFactor, boolean dummy):有HashMap内数组初始长度和加载因子的构造,dummy没用上
public void clear():清理,把HashMap数组所有值置空
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("a");
System.out.println(set);
set.clear();
System.out.println(set);
}
}
结果
[a, b, c, d]
[]
public Object clone():克隆权限的set
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("a");
System.out.println(set);
HashSet<String> clone = (HashSet<String>)set.clone();
clone.remove("d");
System.out.println(clone);
}
}
结果:修改克隆的set,对原来的set不影响
[a, b, c, d]
[a, b, c]
public boolean contains(Object o):包含元素
public boolean isEmpty():是否为空
public Iterator<E> iterator():遍历
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("a");
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
结果:
a
b
c
d
public boolean remove(Object o):移除对象o
public int size():set目前元素数量
public Spliterator<E> spliterator():并行执行而设计的迭代器
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
for (int i = 0; i < 10000; i++) {
set.add("" + i);
}
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("main end");
}
}
结果:
。。。
3627
4957
main end