2016-03-10 41 views
1

我想在按價值計算,僅打印具有最高值 注意關鍵降序排序地圖:如果您想根據輔助排序打印多個關鍵如果兩者都具有相同的價值#Java收集的HashMap

map.put(5,3); 
    map.put(4,1); 
    map.put(2,2); 
    map.put(10,3); 



    Set <Map.Entry<Integer,Integer>>set = map.entrySet(); 
     List <Map.Entry<Integer,Integer>> list = new ArrayList<Map.Entry<Integer,Integer>>(set); 

     Collections.sort(list, new Comparator<Map.Entry<Integer,Integer>>(){ 
      public int compare(Map.Entry<Integer,Integer> obj1, Map.Entry<Integer,Integer> obj2){ 
       return (obj2.getValue().compareTo(obj1.getValue())); 
      } 

     }); 

Now i got output 5,10 but i want output as 10,5 
+0

你是什麼意思「排序映射」?一般地圖不能任意排序 –

回答

1

鍵(即,如果值相等,按降序排列鍵),爲等於大小寫的情況添加條件:

Collections.sort(list, new Comparator<Map.Entry<Integer,Integer>>(){ 
     public int compare(Map.Entry<Integer,Integer> obj1, Map.Entry<Integer,Integer> obj2){ 
      if (!obj2.getValue().equals(obj1.getValue())) 
       return (obj2.getValue().compareTo(obj1.getValue())); 
      else 
       return (obj2.getKey().compareTo(obj1.getKey())); 
     } 

    }); 
+0

謝謝,其工作方式:-) –

+0

@ user3135991不客氣 – Eran