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()); }
运行结果