TreeSet
TreeSet类是Set接口的一个实现类,主要作用是用于对对象的排序以及确定存入对象的唯一性。TreeSet 是SortedSet(排序l集) 接口的实现类,正如SortedSet 名字所暗示的, TreeSet 可以确保集合元素处于排序状态。
1、TreeSet类概述
- 使用元素的自然顺序对元素进行排序
- 或者根据创建 set 时提供的 Comparator 进行排序
- 具体取决于使用的构造方法。
2、TreeSet是如何保证元素的排序和唯一性的
- 底层数据结构是红黑树(红黑树是一种自平衡的二叉树)
自然排序
代码实现: TreeSet存储Integer类型的元素并遍历
package cn.wen_01;
import java.util.TreeSet;
/*
* TreeSet:能够对元素按照某种规则进行排序。
* 排序有两种方式
* A:自然排序
* B:比较器排序
*
* TreeSet集合的特点:排序和唯一
*
* 通过观察TreeSet的add()方法,知道最终要看TreeMap的put()方法。
*/
public class TreeSetDemo {
public static void main(String[] args) {
// 创建集合对象
// 自然顺序进行排序
TreeSet<Integer> ts = new TreeSet<Integer>();
// 创建元素并添加
// 20,18,23,22,17,24,19,18,24
ts.add(20);
ts.add(18);
ts.add(23);
ts.add(22);
ts.add(17);
ts.add(24);
ts.add(19);
ts.add(18);
ts.add(24);
// 遍历
for (Integer i : ts) {
System.out.println(i);
}
}
}
源码大致如下,看不懂就跳过。
interface Collection {...}
interface Set extends Collection {...}
interface NavigableMap {
}
class TreeMap implements NavigableMap {
public V put(K key, V value) {
Entry<K,V>