目录
一、HashSet
1、HashSet简单介绍
说到HsahSet就要先说Set接口
Set 接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比Collection接口更加严格。与List 接口不同的是,Set接口中的元素无序,并且都会以某种规则保证存入的元素不出现重复。
Set接口主要有两个实现类,分别是 HashSet 和TreeSet。其中,HashSet是根据对象的哈希值来确定元素在集合中的存储的位置,因此具有良好的存取和查找性能。TreeSer则是以二叉树的方式来存储元素,它可以实现对集合中的元素进行排序。
HashSet
HashSet是 Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。当向 HashSet集合中添加一个元素时,首先会调用该元素的hashCode()方法来确定元素的存储位置,然后再调用元素对象的equals()方法来确保该位置没有重复元素
2、HashSet的常用方法
常用方法代码演示:
import java.util.HashSet;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
//使用HashSet集合时先要指定泛型中具体的包装类
HashSet<Integer> hashSet=new HashSet<>();
//向hashSet中添加元素 add()
hashSet.add(12);
hashSet.add(34);
hashSet.add(56);
//判断hashSet中是否有12和89两个元素 contains()
System.out.println(hashSet.contains(12)); //true
System.out.println(hashSet.contains(89)); //false
//hashSet中元素的个数 size()
System.out.println(hashSet.size()); //3
//Iterator迭代器遍历集合
Iterator<Integer> iterator=hashSet.iterator();
while (iterator.hasNext()){
Integer i=iterator.next();
System.out.println(i); //输出顺序与添加顺序不同
//System.out.println(iterator.next());
}
//foreach遍历集合
hashSet.forEach(o-> System.out.println(o)); //输出顺序与添加顺序不同
//hashSet.forEach(System.out::println);
//删除hashSet中的某个元素 remove()
System.out.println(hashSet.remove(12)); //true 删除成功返回true
System.out.println(hashSet.remove(89)); //false 删除失败返回false
System.out.println(hashSet.size()); //2
//克隆Hashset实例的浅层副本:元素本身不被克隆。
hashSet.add(12);
Object clone=hashSet.clone();
System.out.println(clone);