Ich habe Map<Float, String>
und möchte das Maximum aller Schlüssel erhalten. In C # würde ich so etwas tun:
Jetzt suche ich nach einer Möglichkeit, dasselbe mit Java 8 lambdas zu machen, aber das nächste, was ich habe, ist:
%Vor%Das sieht schrecklich aus und erfordert völlig unnötige Typumwandlungen. Gibt es einen besseren Weg, dies zu tun?
Die Schnittstelle Stream
enthält eine Methode max
, um das maximale Element zu erhalten. Sie können einen Methodenverweis verwenden, um Comparator
zu erstellen. Die Methode max
gibt eine Optional<Float>
zurück, weil es kein maximales Element gibt. Sie können die Methode orElse
verwenden, um einen alternativen Wert für diesen Fall anzugeben.
Es gibt eine direktere Lösung als die Funktion keySet (); Arbeiten Sie direkt mit dem entrySet (), indem Sie die Komparatorfactorys verwenden, die zu Map.Entry
hinzugefügt wurden.
Dies erlaubt nicht nur, min / max-Elemente zu erhalten, sondern auch zu sortieren, so dass es einfach ist, die zehn wichtigsten Schlüssel / Wert-Paare wie folgt zu finden:
%Vor%