TreeSet排序原理
来源:互联网 发布:西电人工智能学院 编辑:程序博客网 时间:2024/05/19 22:52
1.API
基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
查看如下代码
平时往TreeSet中添加基本类型调用的是TreeSet的无参构造方法,因此是自然排序。
获得结果
自然排序实现了排序和去重,关键是add方法
2.API
NavigableMap<K,V>是一个接口,而这个接口的实现类是TreeMap,所以回过头来我们查看TreeMap的put方法。TreeMap类是基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
往TreeSet中传入自定义对象
首先,需要自定义对象保证排序和唯一;
举例解析
因为自定义对象没有比较规则,所以TreeSet不知道怎么比较,所以报错,因此我们可以定义一个比较器,也就是所谓的带参数的TreeSet构造方法
API
自定义比较器
TreeSet<Dog> ts = new TreeSet<Dog>(new Comparator<Dog>){ @Override public int compare(Dog o1,Dog o2){ int num1 = o1.getName().compareTo(o2.getName()); int num2 = num1 == 0 ? o1.getAge() - o2.getAge() : num1; return num2; }});
用匿名内部类传入一个comparator接口(自定义比较器),重写了抽象方法compare,方法传入两个相互比较的参数,根据return来判断是否往TreeSet中传入以及以怎样的顺序来往红黑树里面存入元素。(例:return返回0,则表示两个元素相同了,不添加)
获得比较结果
TreeSet排序原理总结
TreeSet集合保证元素排序和唯一性的原理
唯一性:是根据比较的返回是否是0来决定的排序: A:自然排序(元素具有比较性) 让元素所属的类实现自然排序的接口Comparable B:比较器排序(集合具有比较性) 让集合的构造方法接受一个比较器接口的子类对象Comparator
阅读全文
0 0
- TreeSet集合排序原理
- TreeSet的排序原理
- TreeSet排序原理
- TreeSet排序
- TreeSet 排序
- TreeSet排序
- TreeSet 排序
- TreeSet保证元素唯一并实现排序的原理
- TreeSet保证元素唯一并实现排序的原理
- TreeSet保证元素的 排序和唯一性 的原理
- TreeSet()原理及使用
- treeset的实现原理
- TreeSet实现原理
- TreeSet实现原理
- TreeSet实现原理
- 使用TreeSet()进行排序
- 总结TreeSet排序问题
- TreeSet进行中文排序
- Nginx安装教程
- TB 16 10 29 AM
- 数据结构——第五讲、树(下)(1)
- [JavaScript] Chrome启用ES6支持
- MATLAB长除法求z变换逆变换
- TreeSet排序原理
- JavaBean
- leetcode.array--33. Search in Rotated Sorted Array
- Windows下常用的100个CMD指令以及常见的操作
- 怎样判断ffmpeg接口是线程安全的?
- Can't update: no tracked branch
- Mysql-触发器
- 【kmp算法—最小循环节】Cyclic Nacklace HDU
- POJ分类很好很有层次感