compareTo
compareTo(Object o)方法是java.lang.Comparable接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable接口的,必须重写public int compareTo(T o)方法。
它强行将实现它的每一个类的对象进行整体排序-----称为该类的自然排序,实现此接口的对象列表和数组可以用Collections.sort(),和Arrays.sort()进行自动排序;
也就是说,只要实现了这个接口的对象(数组)就相当于有了排序的能力,所以叫做comparable—可排序的,所以可以说这是一种内部排序的方式,通过实现它唯一的方法compareTo()。
比如Hadoop中的MapReduce,Map函数和Reduce函数处理的 <key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable接口,实现这个接口可同时用于序列化和反序列化。WritableComparable接口(用于序列化和反序列化)是Writable接口和Comparable接口的组合;
compare
compare(Object o1,Object o2)方法是java.util.Comparator接口的方法,它实际上用的是待比较对象的compareTo(Object o)方法。
对于它,则是针对一些本身没有比较能力的对象(数组)为它们实现比较的功能,所以它叫做比较器,是一个外部的东西,通过它定义比较的方式,再传到Collection.sort()和Arrays.sort()中对目标排序,而且通过自身的方法compare()定义比较的内容和结果的升降序;

compareTo方法使用:

compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。

该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较。

语法
public int compareTo( NumberSubClass referenceName )
参数
referenceName – 可以是一个 Byte, Double, Integer, Float, Long 或 Short 类型的参数。

返回值
如果指定的数与参数相等返回0。

如果指定的数小于参数返回 -1。

如果指定的数大于参数返回 1。

实例

public class Test{
 public static void main(String args[]){
 Integer x = 5;
 System.out.println(x.compareTo(3));
 System.out.println(x.compareTo(5));
 System.out.println(x.compareTo(8));
 }
 }


编译以上程序,输出结果为:

1
0
-1


一.**中心:String 是字符串,它的比较用compareTo方法,它从第一位开始比较, 如果遇到不同的字符,则马上返回这两个字符的ascii值差值.返回值是int类**型 1.当两个比较的字符串是英文且长度不等时,

1)长度短的与长度长的字符一样,则返回的结果是两个长度相减的值

a=“hello”;
 b=“hell”;
 num=1;
 或者
 a=“h”;
 b=“hello”;
 num=4;

2)长度不一样且前几个字符也不一样,从第一位开始找,当找到不一样的字符时,则返回的值是这两个字符比较的值

a=“assdf”;
 b=“bdd”;num=-1;

2.当两个比较的字符串是英文且长度相等时,

1)一个字符

a=“a”; //97
 b=“b”; //98
 num=-1;

2)多个字符,第一个字符不同则直接比较第一个字符

a=“ah”; //a=97
 b=“eg”; //e=101
 num=-4

3)多个字符,第一个字符相同则直接比较第二个字符,以此类推

a=“ae”; //e=101
 b=“aa”; //a=97
 num=4;