Comparable接口
Comparable接口中只有一个方法:public int compareTo(Object obj);
该方法 返回 0 表示 this==obj;
返回 正数 表示 this > obj;
返回 负数 表示 this < obj;
实现了Comparable 接口的类通过实现compareTo 方法确定该类对象的排序方式。
Comparable实例:
public class Name implements Comparable {
private String firstName, lastName;
...
public int compareTo(Object o)
{
Name n = (Name)o;
int lastCmp = lastName.compareTo(n.lastName);
return lastCmp != 0 ? lastCmp :firstName.compareTo(n.firstName);
}
}
Comparator接口
Comparator 通常在对于自然排序不能满足需要时使用。
定义:
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
}
Comparator接口定义的方法:
compare( )方法按顺序比较了两个元素obj1、obj2
该方法 返回 0 表示 obj1==obj2;
返回 正数 表示 obj1 > obj2;
返回 负数 表示 obj1 < obj2;
通过覆盖compare( ),可以改变对象排序的方式。例如,通过创建一个颠倒比较输出的比较函数,可以实现按逆向排序。
equals( )方法测试一个对象是否与调用比较函数相等
obj是被用来进行相等测试的对象。如果obj和调用对象都是Comparator的对象并且使用相同的排序,该方法返回true,否则返回false。
Comparator实例:
public class NameComparator implements Comparator {
public int compare(Object o1, Object o2)
{
Name n1 = (Name)o1;
Name n2 = (Name)o2;
int lastCmp = n1.getLastName().compareTo(n2.getLastName());
return lastCmp != 0 ? lastCmp :
n1.getFirstName().compareTo(n2.getFirstName());
}
}