Java学习(93)Java集合排序——TreeSet的使用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Java集合排序——TreeSet的使用


TreeSet是一个有序的集合它支持自然排序和根据实现Comparator或Comparable接口进行排序。下面我们通过案例来看一下TreeSet的使用。

1. 使用TreeSet对String类型的数据进行存储存储顺序默认按字母升序排序。

first()last()
在本例题中定义TreeSet集合并添加多个字符串到集合中然后对集合进行遍历输出并通过first()和last()方法来获取集合的第一个和最后一个元素。


运行结果


2. 使用TreeSet对Integer类型数据进行存储存储顺序默认按数字从小到大排序。

floor()
在本例题中定义TreeSet对象并向集合中添加整型数据然后输出集合对象也就是将数据放到[]中输出这是集合的默认输出格式。然后使用floor()方法获得集合中最大的元素小于或等于给定元素的值并输出。
代码如下


运行结果


说明
a. 关于floor()方法对于IntSet.floor(10)集合中有等于10的元素所以输出结果为10对于IntSet.floor(2)集合中没有2那么小于2的最大元素就是-1所以输出结果为-1对于IntSet.floor(-2)由于集合中没有小于等于-2的元素所以输出结果为null。
b. 与floor()方法类似TreeSet中还有一个higher()方法用于返回杨哥大于给定元素的该集合中的最小元素如果没有此元素则返回null。

3. 当TreeSet中添加自定义类的对象时是如何进行排序的呢

pollFirst()pollLast()
这里需要实现Comparator和Comparable接口指定以什么属性进行排序以及是升序还是降序排序。
下面以Comparator接口为例实现Person对象按年龄升序排序。

  1. 定义Person类包括编号、姓名和年龄三个属性以及构造方法get和set方法toString()方法等内容。下面代码省略了get和set方法运行时可以补上。


  2. 定义PersonComparator类实现年龄的升序排序


  3. 在测试类的主方法中定义五个Person类的对象并添加到TreeSet中然后显示集合所有元素。并使用pollFirst()方法返回并删除集合第一个元素。


运行结果


说明
a. 注意创建TreeSet对象时要指定Comparator接口的实现类作为参数


b. 这里使用了pollFirst()方法该方法比较特殊可以返回元素但是又把这个元素删除了所以再次循环输出就没有age为17的元素了。
c. 还有一个方法pollLast()功能是检索并删除最后一个元素如果集合为空则返回null。该方法的使用方式与pollFirst()类似。
d. 如果对age进行降序排序可以将PersonComparator类的如下选中代码改为o2.getAge()-01.getAge()


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Java