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());
}
}
根据我的理解,两种比较方法应该给出相同的结果,但它们的行为不同。
有人可以帮助理解他们为何与众不同吗?
答案 0 :(得分:4)
第一个没有正确处理键和值相等的情况。
第二个没有正确处理溢出。