2016-05-02 34 views
0

私はこのコードを持っていますが、値によってhashMapを昇順にソートしています。降順でHashMapを並べ替える必要があります。例えばHashMapを値の降順に並べ替える方法

public Map<String, Float> sortByValue(Map<String, Float> map) { 
List list = new LinkedList(map.entrySet()); 
Collections.sort(list, new Comparator() { 
    public int compare(Object o1, Object o2) { 
      return ((Comparable) ((Map.Entry) (o1)).getValue()) 
     .compareTo(((Map.Entry) (o2)).getValue()); 
    } 
}); 

    Map result = new LinkedHashMap(); 
    for (Iterator it = list.iterator(); it.hasNext();) { 
     Map.Entry entry = (Map.Entry)it.next(); 
     result.put(entry.getKey(), entry.getValue()); 
    } 

    return result; 
} 

私のハッシュマップ:

( "言葉"、0.7)、( "WORD2"、1.0)

私のような注文であることをしたいです

( "WORD2"、1.0)、( "単語、0.7")

答えて

0

compareToの方法を逆にすると、順序を逆転できます。

public int compare(Object o1, Object o2) { 
     return ((Comparable) ((Map.Entry) (o1)).getValue()) 
    .compareTo(((Map.Entry) (o2)).getValue()); 
} 

これは逆の順序につながる、-1とヴィーカその逆に1をオン

public int compare(Object o1, Object o2) { 
     return -((Comparable) ((Map.Entry) (o1)).getValue()) 
    .compareTo(((Map.Entry) (o2)).getValue()); 
} 

に変化します。

+0

ありがとう、それは働いた! – Sabd