Ich finde eine Variante von Collectors.toMap
, die ein ImmutableMap
zurückgibt, so dass ich folgendes tun kann:
(wobei tuple
in diesem speziellen Beispiel eine Scala Tuple2
ist)
Ich habe gerade erfahren , dass eine solche Methode mit Java ausgeliefert wird. 8 Unterstützung in Guava 21 (yay!), Aber das klingt gut 6 Monate weg. Kennt jemand vorhandene Bibliotheken (etc), die dies heute implementieren könnten?
ImmutableMap
ist nicht unbedingt erforderlich, scheint aber die beste Wahl zu sein, wie ich es benötige: Suche nach Schlüssel und Beibehaltung der ursprünglichen Iterationsreihenfolge. Unveränderlichkeit wird auch immer bevorzugt.
Beachten Sie, dass FluentIterable.toMap(Function)
nicht ausreicht, da ich sowohl eine Key-Mapping-Funktion als auch eine Value-Mapping-Funktion benötige.
Sie müssen keine anonyme Klasse für diesen Kollektor schreiben. Sie können stattdessen Collector.of
verwenden:
Oder wenn es Ihnen nichts ausmacht, die Ergebnisse zuerst in einer veränderlichen Map zu sammeln und dann die Daten in eine unveränderbare Map zu kopieren, können Sie den integrierten toMap
collector kombiniert mit collectingAndThen
:
Da ich noch keine solche Sammlung von Sammlern gefunden habe, teile ich meine erste Lücke mit der spezifischen, die ich gebraucht habe. Keine Glocken oder Pfeifen hier! (Wie zum Beispiel doppelte Schlüssel behandeln oder zusammenführen.)
Bitte zögern Sie nicht, Verbesserungen vorzuschlagen.
%Vor%