1. 程式人生 > >Comparable、Comparator區別、Comparator升序降序實現

Comparable、Comparator區別、Comparator升序降序實現

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);
    }

};