在java中对于数组的排序操作,直接调用Arrays.sort()方法就可以了,方便快捷。
但是如果是要对对象数组进行排序呢?是否有现成的方法可供调用呢?对象的每个属性又不一样,是按什么排序的呢。
这些问题大神们已经早就为我们解决了,那就是利用比较器,调用 compareTo()方法,当然为了解决属性比较的问题,是需要对其中的方法进行重写的。
要完成规则的制定,首先要在需要比较的对象类中实现Comparable接口:
public interface Comparable<T>
{
public int compareTo(T o);
}
在这个接口中只提供了一个方法compareTo()方法,按照java Doc中的要求:要排序的数组类要实现此接口。
代码示例:
import java.util.Arrays;
public class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "[name=" + name + ",age=" + age + "]\n";
}
@Override
public int compareTo(Person p) {
if (this.age > p.age) {
return 1;
} else if (this.age < p.age) {
return -1;
} else {
return 0;
}
}
public static void main(String args[]) {
Person per[] = new Person[] { new Person("战三", 18),
new Person("wangwu", 16), new Person("xiaoliu", 25) };
Arrays.sort(per);
System.out.println(Arrays.toString(per));
}
}