Java集合之TreeSet
概述
TreeSet是SortedSet的实现类,可以确保集合元素处于排序状态(根据元素实际值的大小进行排序)
TreeSet采用红黑树的数据结构来存储集合元素,且支持两种排序方法:自然排序和定制排序,默认采用自然排序
常用方法:
Object first() 返回第一个元素
Object last() 返回最后一个元素
Object lower(Object e) 返回指定元素的前一个元素
Object higher(Object e) 返回指定元素的后一个元素
SortedSet subSet(Object fromElement Object toElement): [fromElement,toElement)
SortedSet headSet(Object toElement): [ ,toElement)
SortedSet tailSet(Object fromElement): [fromElement, )
Comparator comparator():如果TreeSet采用了定制排序,则返回定制排序所使用的Comparator.如果是采用自然排序,就返回null
自然排序:TreeSet调用集合元素的compareTo(Object obj)方法来比较元素之间的大小关系,然后将集合元素按升序排列
Java提供了一个Comparable接口,该接口定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小。
TreeSet中的元素应该是同一个类的对象
当把一个对象加入TreeSet集合时,TreeSet调用该对象的compareTo(Object obj)方法与容器中的其他对象比较大小,然后根据红黑树结构找到它的存储位置。
如果两个对象通过compareTo(Object obj)比较相等,新对象将无法添加到TreeSet集合中。
当需要把一个对象放入TreeSet中,重写该对象对应类的equals()方法时,应保证该方法与compareTo(Object obj)方法有一致的结果。其规则是:如果两个对象通过equals()方法比较返回true时,这两个对象通过compareTo(Object obj)比较时应返回0
注:把一个对象添加到TreeSet时,该对象的类必须实现Comparable接口
定制排序:通过Comparator接口的帮助,实现定制排序。该接口里包含了一个int compare(T o1,T o2)方法,用于比较o1和o2的大小
在创建TreeSet集合对象时,提供一个Comparator对象与TreeSet集合关联,由该Comparator对象负责集合元素的排序逻辑
TreeSet ts = new TreeSet((o1,o2) ->
{
M m1 = (M)o1;
M m2 = (M)o2;
return m1.age > m2.age ? -1 : m1.age < m2.age ? 1:0
})
注:M是一个自定义类,关键变量是age
- Java 集合 Set TreeSet
- 黑马程序员java基础之集合Set中的TreeSet和泛型
- java集合之TreeSet
- 黑马程序员 java基础之TreeSet集合
- Java集合之TreeSet
- Java基础知识强化之集合框架笔记43:Set集合之TreeSet存储Integer类型的元素并遍历
- Java集合之TreeSet
- java集合之TreeSet
- java集合Set的应用(HashSet、Tree…
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
- java集合之TreeSet的整理
- Java笔记之HashSet与TreeSet集合的运用
- Java基础集合之TreeSet练习(带答案)
- java基础33 Set集合下的HashSet集合和TreeSet集合
- java基础—自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序(java集合六)
- java--集合框架的Hashset和Treeset
- 黑马程序员:Java基础——Set集合之TreeSet
- Java集合之TreeSet
- java基础/集合框架/set/hasset/linkHasset/TreeSet/
- Java集合之TreeSet