为什么自定义类数组的排序中
sort()的形参可以是:(T[] ,Comparator<? super T>)
T(如例子中的person)的父类只要实现了Comparator<T父>
那么子类T的数组T[] 可以调用sort(T[] ,父类的对象)。按照父类中实现的compare排序方法,进行排序。
public class Test1 {
public static void main ( String[] args ) {
Person p1 = new Person ( "xiaoming",18 );
Person p2 =new Person ( "mao",22 );
Person p3 =new Person ( "xiaomao",30 );
Person[] pp =new Person[]{p1,p2,p3};
Arrays.sort ( pp,new Paixu () );
for( Person p : pp){
System.out.println ( p.name+" "+p.age);
}
}}
class Paixu implements Comparator <Personfather> {
@Override
public int compare ( Personfather o1 , Personfather o2 ) {
if (o1.age>o2.age){
return 1;
}
else if (o1.age<o2.age){
return 0;
}else
return -1;
}
}
class Person extends Personfather {
Person( String name,int age){
super(name,age);
}}
class Personfather{
String name;
int age;
Personfather(){}
Personfather( String name,int age){
this.name=name;
this.age=age;
}
}
输出结果为年龄从小到大排序的Person数组