Comparator
作用
Comparator<T>接口用于构造一个排序规则用于排序
例
package test.package13;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test {
  public static void main(String[] args) {
    TestEnums t = new TestEnums();
    t.test();
  }
  @SuppressWarnings("all")
  public void test() {
    List<A> arraylist = new ArrayList<A>();
    arraylist.add(new A(2));
    arraylist.add(new A(3));
    arraylist.add(new A(4));
    arraylist.add(new A(1));
    arraylist.add(new A(5));
    Comparator c = new Comparator<A>() {
      //compareTo方法返回正数即代表会把两个数交换位置,也就是会把this和o在数组中的顺序交换,所以下面方法即是把大的和小的顺序交换,既把大的放在小的后面,既正序排序。
      @Override
      public int compare(A o1, A o2) {
        if (o1.getI() > o2.getI()) {
          return 1;
        } else {
          return -1;
        }
      }
    };
    Collections.sort(arraylist, c);
    for (int o = 0; o < arraylist.size(); o++) {
      System.out.println(arraylist.get(o).getI());
    }
  }
}
//输出
1
2
3
4
5Comparable
作用
class A实现了Comparable接口之后即需实现compareTo(T t)方法,该方法在我们调用Collections.sort(List<A>)方法时会调用用以将list内部元素根据我们在compareTo(T t)自定义的规则进行排序。
例
package test.package13;
public class A implements Comparable<A>{
    private int i;
    public int getI() {
        return i;
    }
    public void setI(int i) {
        this.i = i;
    }
    A(int i){
        this.i=i;
    }
    //compareTo方法返回正数即代表会把两个数交换位置,也就是会把this和o在数组中的顺序交换,所以下面方法即是把大的和小的顺序交换,既把大的放在小的后面,既正序排序。
    @Override
    public int compareTo(A o) {
        if(this.i>o.i){
            return 1;
        }else{
            return -1;
        }
    }
}
package test.package13;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestEnums {
    public static void main(String[] args) {
        TestEnums t = new TestEnums();
        t.test();
    }
    @SuppressWarnings("all")
    public void test() {
        List<A> arraylist = new ArrayList<A>();
        arraylist.add(new A(2));
        arraylist.add(new A(3));
        arraylist.add(new A(4));
        arraylist.add(new A(1));
        arraylist.add(new A(5));
        Collections.sort(arraylist);
        for (int o = 0; o < arraylist.size(); o++) {
            System.out.println(arraylist.get(o).getI());
        }
    }
}
//输出
1
2
3
4
5区别与联系
Comparable和Comparator都是用来实现集合中元素的比较、排序的。
Comparable是在集合内部定义的方法实现的排序,位于java.lang下。
Comparator是在集合外部实现的排序,位于java.util下。










