您的位置:首页 > 其它

Collections.sort出错 Comparison method violates its general contract!

2017-07-23 10:54 441 查看

 Collections.sort排序:

  Could not complete request java.lang.IllegalArgumentException: Comparison method violates its general contract!

原始排序代码:

fcnodeList 里面存放对象
FCNodeResult ,nodecd是个int类型



Collections.sort(fcnodeList, new Comparator<FCNodeResult>() {
@Override
public int compare(FCNodeResult o1, FCNodeResult o2) {
return o1.getNodecd() < o2.getNodecd() ? -1 : 1;
}
});


修改后代码:

Collections.sort(fcnodeList, new Comparator<FCNodeResult>() {
@Override
public int compare(FCNodeResult o1, FCNodeResult o2) {

return o1.getNodecd().compareTo(o2.getNodecd());
}
});


附加:

Java compareTo() 方法

compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较。

语法

public int compareTo( NumberSubClass referenceName )

参数

referenceName -- 可以是一个 Byte, Double, Integer, Float, Long 或 Short 类型的参数。

返回值

如果指定的数与参数相等返回0。
如果指定的数小于参数返回 -1。
如果指定的数大于参数返回 1。

实例

public class Test{
public static void main(String args[]){
Integer x = 5;
System.out.println(x.compareTo(3));
System.out.println(x.compareTo(5));
System.out.println(x.compareTo(8));
}
}
编译以上程序,输出结果为:1
0
-1




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: