Wie konvertiert man eine Map<String, Double>
zu List<Pair<String, Double>>
in Java 8?Wie konvertiert man Karte in eine Liste in Java 8
Ich schrieb diese Implementierung, aber es ist nicht effizient
Map<String, Double> implicitDataSum = new ConcurrentHashMap<>();
//....
List<Pair<String, Double>> mostRelevantTitles = new ArrayList<>();
implicitDataSum.entrySet().stream().
.sorted(Comparator.comparing(e -> -e.getValue()))
.forEachOrdered(e -> mostRelevantTitles.add(new Pair<>(e.getKey(), e.getValue())));
return mostRelevantTitles;
Ich weiß, dass es funktioniert .collect(Collectors.someMethod())
Verwendung sollte. Aber ich verstehe nicht, wie das geht.
Beachten Sie, dass '-e.getValue()' NaNs nicht neu anordnet. Die Vorwärtsreihenfolge setzt voraus, dass am Ende der Liste "Double.NaN" -Werte vorhanden sind. Mit dem unären Minus werden Sie alles außer * NaNs rückgängig machen: sie werden immer noch am Ende der Liste sein. –
Yeah, 'Map.Entry.comparingByValue (Comparator.reverseOrder())' oder 'Collections.reverseOrder (Map.Entry.comparingByValue())'. Wenn der Vergleich der negativen Werte beabsichtigt ist [Tagir erklärte den Unterschied] (http://stackoverflow.com/questions/35107550/how-to-convert-map-to-list-in-java-8#comment57966768_35107595), dann 'Comparator "cosparingDouble" sollte bevorzugt werden, um ein erneutes Speichern der Werte zu vermeiden. – Holger