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