Comparable
- Comparable源码
package java.lang;
import java.util.*;
public interface Comparable<T> {
public int compareTo(T o);
}
- 什么是Comparable?
Comparable定义了一个compareTo()方法,比较此对象和参数对象o的大小,若此对象小则返回负数,若此对象大则返回正数,若相等则为0。
实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。
Comparable相当于一个内部比较器,在定义我们自己的类的时候实现此接口的compareTo()方法。
- 示例:
public class Content implements Comparable<Content>{
private int value;
public Content(int value) {
this.value = value;
}
@Override
public int compareTo(Content o) {
if (this.value > o.value) {
return 1;
} else if (this.value == o.value) {
return 0;
} else {
return -1;
}
}
}
Comparator
- Comparator源码
package java.util;
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
.....
}
- 什么是Comparator?
Comparator定义了一个compare(T o1, T o2) 方法,“比较o1和o2的大小”,若o1小则返回负数,若o1大则返回正数,若相等则为0。
Comparator相当于一个外部比较器,可以为一个以及存在但是又没有实现Comparable的类实现一个比较器。
- 示例:
public class Content {
private int value;
public Content(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public class ContentComparator implements Comparator<Content> {
@Override
public int compare(Content o1, Content o2) {
return o1.getValue() - o2.getValue();
}
}