目錄
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