Java类库之比较器(重点)
比较器(重点)
如果现在要想为一组对象进行排序,那么必须有一个可以区分出对象大小的关系操作,而这个操作在Java之中就是利用比较器完成的。常用比较器:Comparable(核心)
如果要为对象指定比较规则,那么对象所在的类必须实现Comparable接口,下面首先来看一下这个接口的定义:
public interface Comparable<T> {
public int compareTo(T o);
}
根据文档的要求:要排序的数组所在的类一定要实现此接口,此接口返回的是int型数据,而用户覆写此方法的时候只需要返回三种结果:1(>0)、-1(<0)、0(=0)即可。
范例:实现比较器
package com.pku.wuyu.io;
import java.util.Arrays;
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 "Person [name=" + name + ", age=" + age + "]\n";
}
@Override
public int compareTo(Person o) {
if (this.age > o.age) {
return 1;
} else if (this.age < o.age) {
return -1;
} else {
return 0;
}
}
}
public class Demo01 {
public static void main(String[] args) throws Exception {
Person per[] = new Person[] { new Person("张三", 20),
new Person("李四", 19), new Person("王五", 21) };
Arrays.sort(per) ; // 排序
System.out.print(Arrays.toString(per));
}
}
以后不管是何种情况下,只要牵扯到对象数组排序的操作,永远都是比较器Comparable。