Java compare方法如何处理返回值?在比较级?

Java compare方法如何处理返回值?在比较级?,java,collections,compare,comparator,Java,Collections,Compare,Comparator,正如一位评论人士所说,您的比较方法编码不正确。第一个比较应该是。如果您阅读Javadocs forComparator,您会看到,如果第一个参数在第二个参数之前,它应该返回一个负值;如果它们相等,则返回0;如果第一个参数在第二个参数之后,则返回一个正值。这不是您的代码所做的。比较是有缺陷的,其中一个应该是,如果您使用的是Java 8,Comparator类有一系列内置的静态函数,您可以应用。现在比较不可能返回1。这可能只是一个巧合,它起作用了。它不起作用,所以你的问题毫无意义。“比较器”是一个接

正如一位评论人士所说,您的比较方法编码不正确。第一个比较应该是
。如果您阅读Javadocs for
Comparator
,您会看到,如果第一个参数在第二个参数之前,它应该返回一个负值;如果它们相等,则返回0;如果第一个参数在第二个参数之后,则返回一个正值。这不是您的代码所做的。

比较是有缺陷的,其中一个应该是
,如果您使用的是Java 8,
Comparator
类有一系列内置的静态函数,您可以应用。现在比较不可能返回1。这可能只是一个巧合,它起作用了。它不起作用,所以你的问题毫无意义。“比较器”是一个接口,而不是一个类。
Collections.sort(list, new Comparator<Data>(){
          public int compare(Data obj1, Data obj2){
              return (obj1.value > obj2.value) ? -1: (obj1.value > obj2.value) ? 1:0 ;
          }
    });
private static class Data{
    private String key;
    private int value;

    public Data(String key, int value){
        this.key = key;
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }
}