和List集合一样,Set集合也是属于单列集合,同属于Collcetion集合体系下
List和Set都是单列集合,但是他们是存在区别的
List:有序,元素可重复的单列集合
Set:无序,元素不可重复的单列集合
Set和List集合一样属于接口,无法直接创建实例化对象,需要子类来创建;下面介绍两个两个常用的子类:
HashSet:散列集合,存放是无序的
//通过HashSet创建Set的实例化对象
Set<String> set = new HashSet<String>();
TreeSet:存放有序,不能存放null值,会报空指针异常
//通过TreeSet创建Set的实例化对象
Set<String> set = new TreeSet<String>();
上述是创建Set集合实例化对象的两种方法,既然是集合我们就可以对存放的数据通过泛型进行限制
对于Set集合元素是不能存放重复的,下面通过添加数据来验证(HashSet演示)
//通过TreeSet创建Set的实例化对象
Set<String> set = new HashSet<String>();
//添加数据
set.add("hello");
set.add("java");
set.add("world");
//打印
System.out.println(set);//打印结果:[java, world, hello]
//添加相同的数据
set.add("hello");
//打印
System.out.println(set);//打印结果:[java, world, hello]
通过上述两次打印结果,可以看到,对于set集合中的数据是不能重复出现的,因此添加第二个hello的时候就没能存放到集合中
那么HashSet又是如何保证数据的唯一性的呢?
当比较两个对象是否相同时,首先会比较对象的hashCode值,如果hashCode值相同再调用equals方法进行比较。如果equals比较返回true就判定两个对象相同。如果hashCode值不相同,就直接判定两个对象不相同,不会再调用equals方法
Set集合中也包含一些方法供我们使用
1.boolean contains(Object obj):判断是否包含指定的值
//通过TreeSet创建Set的实例化对象
Set<String> set = new HashSet<String>();
//添加数据
set.add("hello");
set.add("java");
set.add("world");
//打印
System.out.println(set.contains("java"));//打印结果:true
2.boolean isEmpty():判断集合是否为空;true表示为空,false表示不为空
//通过TreeSet创建Set的实例化对象
Set<String> set = new HashSet<String>();
//添加数据
set.add("hello");
set.add("java");
set.add("world");
//打印
System.out.println(set.isEmpty());//打印结果:false
3.boolean remove(Object obj):删除集合中指定的元素
//通过TreeSet创建Set的实例化对象
Set<String> set = new HashSet<String>();
//添加数据
set.add("hello");
set.add("java");
set.add("world");
//删除元素
set.remove("world");
//打印
System.out.println(set);//打印结果:[java, hello]
4.void clear():清空集合中所有的元素
//通过TreeSet创建Set的实例化对象
Set<String> set = new HashSet<String>();
//添加数据
set.add("hello");
set.add("java");
set.add("world");
//清空所有元素
set.clear();
//打印
System.out.println(set);//打印结果:[]
上述主要介绍了一下Set集合的特点,Set集合如何保证数据唯一性的以及Set集合中的一些方法
今天的分享就到这里了,如果有错误的地方欢迎大家来指点!大猿一直在进步