首先,我说一下什么是compateTo
compareTo(Object
o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现
Comparable<T>接口的,必须重写public int compareTo(T
o)方法,比如MapReduce中Map函数和Reduce函数处理的
<key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>
接口,实现这个接口可同时用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是
Writable接口和Comparable<T>接口的组合;
其次,看一个例子
@Override
public int compareTo(Object o) {
if(this ==o){
return 0;
}
else if (o!=null && o instanceof User) {
User u = (User) o;
if(id<=u.id){
return -1;
}else{
return 1;
}
}else{
return -1;
}
当两个对象进行比较时,返回0代表它们相等;
返回值<0(如例子中返回-1)代表this排在被比较对象之前;反之代表在被比较对象之后