java对象比较规则:Comparable & Comparator
来源:互联网 发布:淘宝css模板 编辑:程序博客网 时间:2024/04/27 19:03
两个接口都是用来定义比较规则的
Comparable接口(用于在类内部定义比较规则,一个类只能定义一个)
public int compareTo(Dog o)
Comparator接口(在类外部定义比较规则,可以定义多个比较规则使用)
public int compare(Dog o1, Dog o2)
使用:
在一些排序的应用中将使用接口
比如:TreeSet和TreeMap
java.util.TreeSet.TreeSet<Dog>(Comparator<? super Dog> comparator)
TreeSet可以创建有序的集合,此时将使用到排序规则,上述使用的Dog对象要么实现comparable接口,
要么在创建TreeSet实例时传入Comparator作为比较规则使用
如果两者都没有,报错。
如果两者都有,将使用传入的Comparator对象作为比较规则
TreeMap的put方法:
public V put(K key, V value) { .... .... // split comparator and comparable paths Comparator<? super K> cpr = comparator; //在这里开始判断,if 传入了Comparator对象,则使用这个对象的比较规则 //else 调用对象的Comparable.compareTo方法, //如果对象没有实现Comparable接口,则不能强转成功,抛出异常 if (cpr != null) { do { parent = t; cmp = cpr.compare(key, t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null); } else { if (key == null) throw new NullPointerException(); @SuppressWarnings("unchecked") Comparable<? super K> k = (Comparable<? super K>) key; do { parent = t; cmp = k.compareTo(t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null); } }
0 0
- java对象比较规则:Comparable & Comparator
- Java比较器(Comparable、Comparator)
- java比较:Comparable和Comparator
- Java-比较器(Comparable、Comparator)
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- Java中Comparable和Comparator实现对象比较
- cocosStudio和cocos2d-x版本对应
- 算法模型好坏、评价标准、算法系统设计
- ubuntu 15.10 搭建 node.js 环境
- update() 与Fixedupdate的区别
- 练习三1016-走塌陷的格子
- java对象比较规则:Comparable & Comparator
- 常见的运行错误
- POJ 1127 Jack Straws (计算几何)
- ubuntu虚拟机进不去界面
- linux笔记
- 深入理解Java的接口和抽象类
- RPC Notes
- mockito-初始化注解
- java集合 list set map