いつもお世話になっております。
CollectionsクラスのreverseOrderメソッドは引数にComparatorをとるようになっておりますが、以下のコードでは、引数にComparatorの記述はなく、Map.EntryインタフェースのcomparingByValueメソッドが使われております。
Map.EntryインタフェースのcomparingByValueメソッドとComparatorが何かしら関係しているのだろうと予想しておりますが、なぜMap.EntryインタフェースのcomparingByValueメソッドがComparatorとして扱われているのかが分かっておりません。
reverseOrderメソッドの引数には、Comparatorオブジェクトが来るはずなのに、なぜMap.Entryインタフェースが来ているのでしょうか。
(comparingByValueメソッドの戻り値がComparatorになるため、戻り値が引数であるComparatorとして扱われているという認識でしょうか?)
Java
1import java.util.Collections; 2import java.util.HashMap; 3import java.util.Map; 4 5public class Test { 6 7 public static void main(String[] args) { 8 // TODO 自動生成されたメソッド・スタブ 9 Map<Integer, String> map = new HashMap<>(); 10 map.put(1, "B"); 11 map.put(2, "A"); 12 map.entrySet() 13 .stream() 14 .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) 15 .forEach(System.out::println); 16 } 17 18} 19
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/01 02:02
退会済みユーザー
2020/05/01 02:17
2020/05/01 02:19