Java中的HashSet是什么?
Java中的HashSet是一种基于哈希表实现的无序集合,可以存储不重复的元素。它实现了Set接口,继承自AbstractSet类。HashSet中的元素不按照特定的方式排序,而是根据元素的哈希码来存储和检索元素。
HashSet内部实现了一个HashMap,将元素作为key,value则对应一个常量Object对象。通过哈希算法,将插入的元素按照哈希值来计算其在HashMap中的位置,实现高效的插入和查找。
HashSet的创建
创建一个空的HashSet对象可以通过无参构造函数来实现:
HashSet<Integer> hashSet = new HashSet<>();
也可以通过传递一个Collection接口类型的对象来创建:
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
HashSet<Integer> hashSet = new HashSet<>(arrayList);
HashSet的基本操作
添加元素
可以使用add方法向HashSet中添加元素,如果HashSet中已经存在该元素,则不会重复添加。
HashSet<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
hashSet.add("apple"); // 重复元素不会被添加
移除元素
可以使用remove方法从HashSet中移除指定元素,如果元素不存在则不会产生影响。
HashSet<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
hashSet.remove("apple");
判断元素是否存在
可以使用contains方法判断HashSet中是否存在指定元素。
HashSet<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
boolean containsApple = hashSet.contains("apple"); // true
boolean containsOrange = hashSet.contains("orange"); // false
获取元素个数
可以使用size方法获取HashSet中元素的个数。
HashSet<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
int size = hashSet.size(); // 2
HashSet的示例说明
示例1:去重
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(1);
arrayList.add(4);
arrayList.add(2);
HashSet<Integer> hashSet = new HashSet<>(arrayList);
System.out.println(hashSet); // [1, 2, 3, 4]
在示例中,我们使用HashSet对一个ArrayList进行去重,得到不重复的元素集合。注意,HashSet中的元素是无序的。
示例2:交集
HashSet<Integer> hashSet1 = new HashSet<>();
hashSet1.add(1);
hashSet1.add(2);
hashSet1.add(3);
hashSet1.add(4);
HashSet<Integer> hashSet2 = new HashSet<>();
hashSet2.add(3);
hashSet2.add(4);
hashSet2.add(5);
hashSet2.add(6);
hashSet1.retainAll(hashSet2);
System.out.println(hashSet1); // [3, 4]
在示例中,我们创建了两个HashSet,分别添加了元素1~6。然后通过retainAll方法对hashSet1和hashSet2进行交集操作,得到的结果是含有元素3和4的HashSet。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的HashSet是什么? - Python技术站