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

 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 ) 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));            
     }
} 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
0
-1
 
 
 
 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值