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