java比较方法说明

时间:2017-11-16 17:52:44

标签: java compareto

   public int compare(Map.Entry<Integer,Integer> o1, Map.Entry<Integer,Integer> o2){
                if(o1.getValue() < o2.getValue() ){
                    return -1;
                }
                else if(o1.getValue() > o2.getValue()){
                    return 1;
                }
                else{ 
                        if(o1.getKey() < o2.getKey()){
                            return -1;
                        }else{
                            return 1;
                        }
                }
}


public int compare(Map.Entry<Integer,Integer> o1, Map.Entry<Integer,Integer> o2){

                if(o1.getValue() == o2.getValue()){
                    return (o1.getKey() - o2.getKey()); 
                }
                else{
                    return (o2.getValue() - o1.getValue());
                }

} 

根据我的理解,两种比较方法应该给出相同的结果,但它们的行为不同。

有人可以帮助理解他们为何与众不同吗?

1 个答案:

答案 0 :(得分:4)

第一个没有正确处理键和值相等的情况。

第二个没有正确处理溢出。