Comparable、Comparator區別、Comparator升序降序實現
阿新 • • 發佈:2019-02-09
Comparable與Comparator的區別
可參考:
http://blog.csdn.net/mageshuai/article/details/3849143
總結:
1) 用 Comparator 是策略模式(strategy design pattern),就是不改變物件自身,而用一個策略物件(strategy object)來改變它的行為。
2) Comparable改變物件自身。
Comparator升序降序實現
int compare(Object o1, Object o2) 返回一個基本型別的整型
1) 如果要按照升序排序,
則o1 小於o2,返回-1(負數),相等返回0,01大於02返回1(正數)
有如下兩種實現方法:
Comparator comparator = new Comparator() {
@Override
public int compare(Integer x, Integer y) {
//方法一
// return (x==y)?0:(x<y)?1:(-1);
//方法二
return (x==y)?0:(x-y);
}
};
2) 如果要按照降序排序
則o1 小於o2,返回1(正數),相等返回0,01大於02返回-1(負數)
有如下兩種實現方法:
Comparator comparator = new Comparator() {
@Override
public int compare(Integer x, Integer y) {
//方法一
// return (x==y)?0:(y<x)?1:(-1);
//方法二
return (x==y)?0:(y-x);
}
};