写在前面:
视频是什么东西,有看文档精彩吗?
视频是什么东西,有看文档速度快吗?
视频是什么东西,有看文档效率高吗?
诸小亮:下面我们介绍 Set 的另一个实现类——TreeSet
张小飞:这个跟 HasSet 有什么区别?
诸小亮:最大的区别是——存储数据的方式不同
特点
诸小亮:我们先看看 TreeSet 独有的一些特点
去重且排序
诸小亮:使用 TreeSet 不仅会自动去重,还会对集合中的元素自动排序
张小飞:排序?
诸小亮:是的,来看下面的代码
public static void main(String[] args) throws Exception {
// TreeSet 可以去重和排序
Set set = new TreeSet();
set.add(3);
set.add(1);
set.add(2);
set.add(1);
System.out.println(set);
}
结果:,
张小飞:它排序的原理是什么呢?
诸小亮:它默认根据元素的自然顺序排序
张小飞:什么是自然顺序?
诸小亮:自然顺序,就是 ASCII 码表中的顺序,根据它们在 ASCII 码表中的值进行排序
张小飞:明白了
元素必须实现 Comparable 接口
诸小亮:另外,TreeSet 存储的元素必须实现 Comparable 接口
张小飞:必须吗?
诸小亮:是的,下面代码 Hero 没有就实现 Comparable
public static void main(String[] args) throws Exception {
Set set = new TreeSet();
set.add(new Hero("妲己"));
set.add(new Hero("西施"));
set.add(new Hero("嫦娥")