compareto方法 java c

java的compareTo方法运行的原理

compareTo方法原理:先读取出字符串的第一个“字母”进行比较,比较的方法是ascii码表的值(字符所对应的十进制值),如果前面的大那么返回1,后面的大返回-1;此位置相同,继续比较下一位,直到最后一位,如果都相同的话,就返回0;

举例:
int cc= “13“.compareTo(“12“);
System.out.println(cc);
int dd= “11“.compareTo(“12“);
System.out.println(cc);
int dd= “aaa“.compareTo(“aaa“);
System.out.println(cc);
结果就是:1(换行) -1(换行)0。

java的compareto方法是谁的方法

compareTo(Object o) 方法是java.lang.Comparable《T》接口中的方法,

比较有两个方法经常搞混淆,现对其进行总结以加深记忆。


1.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》接口的组合;

2.compare(Object o1,Object o2)方法是java.util.Comparator《T》接口的方法,

它实际上用的是待比较对象的compareTo(Object o)方法。

下面我们写一来看看上面两个方法是怎么用的:

首先,写一个User类,代码如下:

public class User implements Comparable《Object》{
    int id;
    String name;
    
    public User(int id,String name){
        this.id = id;
        this.name = name;
    }
    /*
     * Getters and Setters
    */
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
       
    @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;
    }
}
}

接下来,我们写一个测试类Test:

public class Test{
    //编写Comparator,根据User的id对User进行排序
    private static final Comparator《User》 COMPARATOR = new Comparator《User》() {
       public int compare(User o1, User o2) {
           return o1.compareTo(o2);//运用User类的compareTo方法比较两个对象       
      }
   };
    
    public static void main(String args) {
        ArrayList《User》 student = new ArrayList《User》();
        User user1 = new User(1,“yueliming“);
        User user2 = new User(2,“yueliming“);
    
        Collections.sort(student, COMPARATOR);//用我们写好的Comparator对student进行排序
        for(int i=0;i《student.size();i++){
            System.out.println(student.get(i).getId());
        }
    }
}

compareTo方法怎么理解

lastName是当前对象的一个成员变量。这段代码的意思是比较Name对象的大小其实就是比较其成员变量lastName的大小。至于对象具体是哪个我也不清楚。Collections.sort(t);这个方法就是循环调用t列表里所有的对象的这个方法。

java中的String的compareTo()方法问题

楼主请看一下java api中对String类中compareTo方法的解释,

1.result.compareTo(result2)) 是根据第一个红框标注的方法比较的,即返回这两个字符串在位置 k 处两个char 值的差

2.“hello“.compareTo(“hello,“)
则是根据第二个红框标注的方式进行比较的,即返回这两个字符串长度的差

请楼主采纳

还是搞不明白compareTo()方法

1.先回答得到的返回值是负整数、零或正整数,和排序问题怎么联系:
返回这3种值对我们来说或许没有意义,但是这3个值告诉底层如何判断2个对象的大小,至于排序,我们是通过Collections.sort和Arrays.sort进行,而这2个方法在底层实现时,使用到了object1.compareTo(object2)这种方法进行判断谁大谁小,从而调整数组,最终给你返回有序的集合.注:你可以参考源代码,所有的排序都要用到调用的是Arrays.mergeSort(Object src,Object dest,int low,int high,int off).
2.Comparable还有Comparator的使用:当你自己写类时,如果希望这个类能按照自己的意愿进行排序,你就实现Comparable接口,你就是只要告诉底层怎么判断大小(即compareTo()),然后想排序,就是用Collections.sort(List list)即可;
而Comparator的使用:强行对某个对象 collection 进行整体排序,而集合里的对象可以是没有实现Comparable接口的对象,也可以是实现了Comparable接口的对象,使用这个排序器可以改变默认的排序时使用比较大小的方法,这时候底层进行排序就不再是用默认的自然排序,在底层对集合进行排序将不再是用Arrays.mergeSort(Object src,Object dest,int low,int high,int off),而是是用Arrays.mergeSort(Object src,Object dest,int low,int high,int off,Comparator c),比较大小则是用了c.compare(dest[j-1], dest[j])。

java compareto 是怎么比较的

java中的compareto方法,返回参与比较的前后两个字符串的asc码的差值。
如果两个字符串首字母不同,则该方法返回首字母的asc码的差值
参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值,如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值

字符串类中的CompareTo方法怎么用

compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的
差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方
全比较完,这时就比较字符的长度.
例:
String
s1
=
“abc“;
String
s2
=
“abcd“;
String
s3
=
“abcdfg“;
String
s4
=
“1bcdfg“;
String
s5
=
“cdfg“;
System.out.println(
s1.compareTo(s2)
);
//
-1
(前面相等,s1长度小1)
System.out.println(
s1.compareTo(s3)
);
//
-3
(前面相等,s1长度小3)
System.out.println(
s1.compareTo(s4)
);
//
48
(“a“的ASCII码是97,“1“的的ASCII码是49,所以返回48)
System.out.println(
s1.compareTo(s5)
);
//
-2
(“a“的ASCII码是97,“c“的ASCII码是99,所以返回-2)
s1.compareTo(s1.intValue())》0;//此方法判断是否为整型

这个是从百度提问上找到,我看了一下还是挺清楚的,不知道这个c#的compare
to方法是不是你要找的

Java 中 compareTo方法问题

compareTo方法原理:先读取出字符串的第一个“字母”进行比较,比较的方法是ascii码表的值(字符所对应的十进制值),如果前面的大那么返回1,后面的大返回-1;此位置相同,继续比较下一位,直到最后一位,如果都相同的话,就返回0;

举例:
int cc= “13“.compareTo(“12“);
System.out.println(cc);
int dd= “11“.compareTo(“12“);
System.out.println(cc);
int dd= “aaa“.compareTo(“aaa“);
System.out.println(cc);
结果就是:1(换行) -1(换行)0。

java中的compareTo(Object o)的方法怎么使用

compareTo方法中,如果前面的值大返回1,如果后面的大于,前面的,返回-1,或者等于前面的,返回0,举例:
int cc= “13“.compareTo(“12“);
System.out.println(cc);
int dd= “11“.compareTo(“12“);
System.out.println(cc);
int dd= “aaa“.compareTo(“aaa“);
System.out.println(cc);
结果就是:1(换行) -1(换行)0。
备注:除了compareTo方法外,为了比较字母,还有compareToIgnoreCase(忽略大小写比较),用法和compareTo方法相同。

Java compareTo方法是怎么比较的

ToDoItem类的对象有3属性,

这个compareTo()方法则是将一个ToDoItem对象作为参数,与调用该方法的对象做比较;

比较的方式:先比primary属性的大小,如果相等,则比较secondary属性,不比较item属性。

比较的结果:如果比参数对象大,则返回+1,如果相等,则返回0,如果比参数小,则返回-1。

这样说应该讲明白了吧,如果有帮助采纳下。

BTW平时这些问题可以多看几个类似w3shool、runoob这些教程网站,很快就可以弄懂。