【发布时间】:2020-05-17 18:32:42
【问题描述】:
我没有通过使用比较器获得排序列表。我尝试使用 Collections.sort() 来解决它,然后只有我得到了正确的答案。
public class CompratorProgram2 {
public static void main(String[] args) {
List<Integer> l= new ArrayList<>();
l.add(232);
l.add(524);
l.add(111);
l.add(433);
Comparator<Integer> ac= new CompratorProgram();
Collections.sort(l, ac);
// Collections.sort(l);
for(int i: l)
System.out.println(i);
}
}
二等
public class CompratorProgram implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2){
if(o1>02)
return 1;
else
return -1;
}
}
【问题讨论】:
-
我将其作为输出 - 232、524、111、433
-
这是
o2,而不是02 -
该
compare方法违反了它的contract:实现者必须确保所有x和y的sgn(compare(x, y)) == -sgn(compare(y, x))。 当@ 987654330@ 和y相等,因为compare(x, y)和compare(y, x)都会返回-1。
标签: java arraylist collections comparator