Ich habe versucht, Map.Entry Comparator in Java8 mit Lambda-Ausdrücke und haben ein sehr seltsames Verhalten gefunden.Java 8 Map.Entry Komparator
Map<Integer, String> map = new TreeMap<>();
map.put(1, "Hello");
map.put(3, "zzzz");
map.put(2, "aaaa");
map.put(5, "AAAAA");
map.put(4, "aaaa");
Comparator<Map.Entry<Integer, String>> com = Comparator.comparing(Map.Entry::getValue);
com = com.reversed();
Comparator<Map.Entry<Integer, String>> com2 = Comparator.comparing(Map.Entry::getValue).reversed();
com ganz gut funktioniert, aber com2 enthält ein Misstake "nicht Methode getValue lösen". Und ich weiß wirklich nicht warum? Irgendwelche Vorschläge?
P.S. Gibt es eine Möglichkeit, die Eingabe zu vermeiden Map.Entry mit Integer, String? Jeder kürzere Weg?
Dies scheint eine Einschränkung zu sein, wie der Java-Compiler die generischen Parameter und den Rückgabetyp eines Lambda ableitet, also gibt es hier wahrscheinlich nicht viel zu tun. Sie können auf die nächste Version des Compilers warten, die intelligenter sein kann. :) – biziclop