2017-03-01 21 views
1

私は値でHashMapsを並べ替えることができるこのメソッドに遭遇しました。HashMapを逆順で並べ替えますか?

public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) { 
     return map.entrySet() 
       .stream() 
       .sorted(Map.Entry.comparingByValue()) 
       .collect(Collectors.toMap(
         Map.Entry::getKey, 
         Map.Entry::getValue, 
         (e1, e2) -> e1, 
         LinkedHashMap::new 
         )); 
    } 

私はComparatorreversed()メソッドを使用したいが、私はそれを置くために適切な場所を見つけるように見えることはできません。

+0

http://stackoverflow.com/a/28607267/616460 –

+0

@JornVernee –

+0

「doesnのを動作しないこと'仕事は?' 「うまくいかない」とはどう? –

答えて

4

Comparatorreversed()メソッドが呼び出され、comparingByValue()が返されます。あなたがジェネリック型を指定する必要がありますので、Javaの型推論は、残念ながら、ここにブレークダウン:

public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue 
    (Map<K, V> map) { 

    return map.entrySet() 
      .stream() 
      .sorted(Map.Entry.<K, V> comparingByValue().reversed()) 
      // Type here -----^ reversed() here -------^ 
      .collect(Collectors.toMap(
        Map.Entry::getKey, 
        Map.Entry::getValue, 
        (e1, e2) -> e1, 
        LinkedHashMap::new 
      )); 
} 
+3

@BenArnaoなぜあなたの質問にあなたが試したものを含めるか、試したことがうまくいかなかった理由を明確に説明することは、一般的には良い考えです。 –

+1

ありがとう、これは私が必要なものです。その場所でreversed()を使ってみましたが、型を指定しなければならなかったので動作しませんでした。 –

関連する問題