存在许多优先于它的方式。但为了维护更好的兼容性、性能和避免运行时异常(比如空指针异常),使用最佳实践。
对于字符串:
@Override
public int compareTo(OtherObject o) {
return String.CASE_INSENSITIVE_ORDER.compare(this.name,o.name);
}
对于int、double和float类型(为了避免装箱和拆箱对性能的影响,请使用以下比较器)
Comparator.compareInt, Comparator.compareDouble, Comparator.compareFloat
public int compareTo(Integer anotherInteger) {
return compare(this.value, anotherInteger.value);
}
public int compareTo(Double anotherDouble) {
return Double.compare(value, anotherDouble.value);
}
public int compareTo(Float anotherFloat) {
return Float.compare(value, anotherFloat.value);
}
public int compareTo(Object other) {
return Object.compare(value, other.value);
}
[Effective Java 条款14:考虑实现Comparable接口]
最后,每当您实现一个有意义的排序值类时,应该让这个类实现Comparable接口,以便其实例可以轻松地进行排序、搜索和用于基于比较的集合。在实现compareTo方法时,避免使用<和>运算符来比较字段值。相反,使用装箱原始类型类中的静态compare方法或Comparator接口中的比较器构造方法。
String
实现了Comparable<String>
接口... - ppeterka