如果不进行重载,compareTo会按照字母大小排序,如果进行重载,可以按照自己的想法进行重载。一下是该方法的说明:
public int compareTo(String anotherString)
    按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。    这是字典排序的定义。如果这两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引对二者均为有效索引,要么它们的长度不同,或者同时具备上述两种情况。如果它们在一个或多个索引位置上具有不同的字符,假设 k 是这类索引的最小值;则按照 < 运算符确定的那个字符串在位置 k 上具有较小的值,其字典顺序在其他字符串之前。这种情况下,compareTo 返回这两个字符串在位置 k 处的两个不同的 char 值,即值:         this.charAt(k)-anotherString.charAt(k)如果它们没有不同的索引位置,则较短字符串在字典顺序上位于较长字符串的前面。这种情况下,compareTo 返回这两个字符串长度的不同,即值:         this.length()-anotherString.length()指定者:
        接口 Comparable<String> 中的 compareTo    参数:
        anotherString - 要比较的 String。 
    返回:
        如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。http://gceclub.sun.com.cn/download/Java_Docs/html/zh_CN/api/index.html
这个是jdk中文文档

解决方案 »

  1.   

    是这样的,你在使用Collections.sort(list)的时候,这个方法内部会调用compareTo方法对list中的对象进行比较,根据返回结果判断两个对象的大小,进行排序。楼主可以查看源码。
      

  2.   

    set里面用TreeSet排序也可以使用这个吗
      

  3.   

    Collections.sort()里面只能是List,TreeSet自动排序过程中也会使用compareTo比较元素间的相互大小。
      

  4.   

    Collections.sort()里面只能是List,TreeSet自动排序过程中也会使用compareTo比较元素间的相互大小。compareTo() 这个函数的返回值不是int类型的吗,返回-1,0,1这些是怎么和字符顺序结合在一起的?是又调用了哪个函数吗?