Java的Set集合

开发工具与关键技术: MyEclipse 10、Java语法
作者:邓婵
撰写时间:2019年6 月5 日

Set集合中主要的是HashSet类和TreeSet类。set接口是无序不可重复的。
HashSet类按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。
HashSet特点:
1)不能保证元素的排列顺序,顺序可能与添加顺序不同。
2)HashSet线程不安全的。
3)集合元素值可以是null,但只能放一个null。
LinkedHashSet是HashSet类的子类,LinkedHashSet将会按元素的添加顺序来访问集合里的元素。
TreeSet类是 SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态,是有序的,TreeSet不可以放入null值。

TreeSet是有序的,也支持Comparable和Comparator两种排序方式。
一、TreeSet中的Comparable排序:
例子:
在这里插入图片描述
在这里插入图片描述
说明:其实TreeSet的Comparable排序与List的Comparable排序是类似的。List需要调用Collections工具类里面sort排序的方法进行排序,而TreeSet中默认就已经有了排序,它会自动调用排序,不需要手动调用Collections.sort这个方法,其余的都与List集合中的一致,不发生改变。
结果如图下所示:
在这里插入图片描述

二、TreeSet中的Comparator排序:
例子:
在这里插入图片描述
在这里插入图片描述
说明:其实TreeSet的Comparator排序与List的Comparator排序是类似的。List中的Comparator排序是通过调用sort 排序Collections.sort传入Comparator,而TreeSet中通过new实例的时候多传入一个变量进去,就是new的时候把Comparator传进去。在new实例TreeSet的时候,如果是自定义排序的话它需要一个参数,通过构造器的方式把参数传进去,再实现它的接口里的方法。原本是这样new实例的Set persons = new TreeSet(),但自定义排序在传入参数时,把参数放在了实例的最后一个括号中,其余的都与List集合中的一致,不发生改变。
结果如图下所示:
在这里插入图片描述
HashSet类和TreeSet类的选择
HashSet的性能总是比TreeSet好,只有当需要一个保持排序的Set时,才应该使用TreeSet,否则一般都应该使用HashSet。Set的实现类HashSet、TreeSet都是线程不安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值