1.Comparable接口位於java.lang包下,Comparator位於java.util包下html
2.這兩個接口均可以用於對象數組的排序,若是一個類,定義的時候,就已經實現了Comparable接口,那麼咱們就是用Comparable方法進行對象數組的排序,使用這種方法,實現類必須重寫java
int compareTo(T o)方法,在這個方法中,咱們定義本身的對象比較規則。而後利用Arrays類的public static void sort(Object[] a)方法對對象數組進行排序。api
3.若是一個類在定義的時候沒有實現Comparable接口,在使用的過程當中須要對對象數組進行排序,咱們能夠再定義一個類,實現Comparator接口,而後重寫int compare(T o1,T o2)方法實現比較規則。數組
而後用Arrays類的public static <T> void sort(T[] a,Comparator<? super T> c)方法進行比較。ide
package com.comparable; import java.util.Arrays; class Cat implements Comparable<Cat>{ private String name; private int age; public Cat() { // TODO Auto-generated constructor stub } public Cat(String name,int age) { this.name=name; this.age=age; } @Override public String toString() { return "姓名:"+this.name+",年齡:"+this.age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } @Override public int compareTo(Cat o) { if(this.age<o.age) { return -1; }else if(this.age>o.age){ return 1; }else{ return 0; } } } public class TestComparable { public static void main(String[] args) { Cat[] cats=new Cat[]{ new Cat("小白",1), new Cat("小花",4), new Cat("小黑",3), }; Arrays.sort(cats); System.out.println(Arrays.toString(cats)); } }
package com.comparable; import java.util.Arrays; import java.util.Comparator; class Cat1{ private String name; private int age; public Cat1() { // TODO Auto-generated constructor stub } public Cat1(String name,int age) { this.name=name; this.age=age; } @Override public String toString() { return "姓名:"+this.name+",年齡:"+this.age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } } class CatComparatorImpl implements Comparator<Cat1>{ @Override public int compare(Cat1 o1, Cat1 o2) { if(o1.getAge()<o2.getAge()) { return -1; }else if(o1.getAge()>o2.getAge()){ return 1; }else{ return 0; } } } public class TestComparator { public static void main(String[] args) { Cat1[] cats1=new Cat1[]{ new Cat1("小白",1), new Cat1("小花",4), new Cat1("小黑",3), }; CatComparatorImpl cci=new CatComparatorImpl(); Arrays.sort(cats1, cci); System.out.println(Arrays.toString(cats1)); } }