Java HashSet 集合
HashSet 集合
繼承自 AbstractCollection
實現了 Collection 接口
底層使用 HashMap 集合,將元素作爲 HashMap 集合的鍵進行存儲
迭代器調用的是底層Map的 map.keySet().iterator
存儲無序,不能使用索引獲取元素
元素不可重複,hash算法和equals方法進行判斷元素是否重複,重複則不添加
使用方法
添加元素
示例
HashSet<Integer> hs = new HashSet<>(); // 添加元素 hs.add(10); hs.add(20); System.out.println("add(E e) :" + hs); // 添加一個集合 // 由於添加的是集合本身,所有元素重複,添加不進去 hs.addAll(hs); System.out.println("addAll(Collection<? extends E> c) :" + hs);
運行結果
移除元素
示例
HashSet<Integer> hs = new HashSet<>(); for (int i = 1; i <= 5; i++) { hs.add(i); } hs.remove(Integer.valueOf(3)); System.out.println("remove(Object o) :" + hs); // 移除交集元素 // removeAll(Collection<?> c)
運行結果
判斷相關
示例
HashSet<Integer> hs = new HashSet<>(); for (int i = 1; i <= 5; i++) { hs.add(i); } // 判斷集合中是否包含指定元素 boolean result = hs.contains(Integer.valueOf(3)); System.out.println("contains(Object o)" + result); // 判斷集合是否爲空 result = hs.isEmpty(); System.out.println("isEmpty()" + result);
運算結果
遍歷集合
將集合轉換成數組,然後遍歷數組
示例
HashSet<Integer> hs = new HashSet<>(); for (int i = 1; i <= 5; i++) { hs.add(i); } Integer[] array = hs.toArray(new Integer[hs.size()]); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); }
運行結果
foreach (增強for)
- 示例
HashSet<Integer> hs = new HashSet<>(); for (int i = 1; i <= 5; i++) { hs.add(i); } Integer[] array = hs.toArray(new Integer[hs.size()]); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); }
- 示例
foreach (增強for)
示例
HashSet<Integer> hs = new HashSet<>(); for (int i = 1; i <= 5; i++) { hs.add(i); } for(Integer i : hs) { System.out.println(i); }
運行結果
iterator 迭代器
示例
HashSet<Integer> hs = new HashSet<>(); for (int i = 1; i <= 5; i++) { hs.add(i); } Iterator<Integer> iterator = hs.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); }
運行結果