TreeSet 与 TreeMap 相关
1 TreeSet集合
1:TreeSet集合底层是一个TreeMap
2:TreeMap 集合底层是一个二叉树
3:放到TreeSet集合中的元素,相当于放到了TreeMap集合的key部分
4:TreeSet集合中的元素:无序不可重复,但是可以按照元素的大小顺序自动排序,称为可排序集合
5:如何对自定义的元素进行排序?
1:放在TreeSet集合中的元素需要实现java.lang.Comparable接口,且实现compareTo方法。equals可以不写。
2:单独传入比较器
自平衡二叉树
遇到根节点就先遍历左
2 最后结论
放到TreeSet或者TreeMap集合key部分的元素要想做到排序,包括两种方式:
第一种:放在集合中的元素实现java.lang.Comparable接口。
第二种:在构造TreeSet或者TreeMap集合的时候给它传一个比较器对象。
Comparable和Comparator怎么选择呢?
当比较规则不会发生改变的时候,或者说当比较规则只有1个的时候,建议实现Comparable接口。
如果比较规则有多个,并且需要多个比较规则之间频繁切换,建议使用Comparator接口。
Comparator接口的设计符合OCP原则。**
3 Collections 工具类
java.util.Collection 集合接口
java.util.Collections 集合工具类,方便集合的操作。
// ArrayList集合不是线程安全的。
List<String> list = new ArrayList<>();
// 变成线程安全的
Collections.synchronizedList(list);
Collections.sort()
注意:对List集合中元素排序,需要保证List集合中的元素实现了: Comparable接口。
对Set集合怎么排序呢?
List myList = new ArrayList<>(set)
将Set集合转换成List集合
Collections.sort(myList)