Java集合框架之Set集合简介

和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集合中的一些方法

今天的分享就到这里了,如果有错误的地方欢迎大家来指点!大猿一直在进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值