/ / Konvertieren eines Streams in eine HashMap (nicht in eine Map) in Java 8 - Java, Java-8, Hashmap, Java-Stream

Wie man einen Strom in eine HashMap (nicht Karte) in Java 8 umwandelt - java, java-8, hashmap, java-stream

Ich habe einen Stream und möchte ihn explizit in einer HashMap sammeln. Im Moment mache ich so etwas wie

List<Item> listToTransform = //initialized and populated
HashMap<K, V> myHashMap = new HashMap<>();
listToTransform.stream().map(/* do my transformation here */)
.forEach(i -> myHashMap.put(i.getKey(), i.getValue()));

Ich habe mich gefragt, ob es eine Möglichkeit gibt, Collectors zu verwenden, um eine HashMap explizit zurückzugewinnen.

Antworten:

6 für die Antwort № 1

Eine der Überladungen zum Collectors.toMap Mit dieser Methode können Sie eine Kartenimplementierung Ihrer Wahl auswählen.

Leider ist dies einer der NachteileÜberladung ist, dass es auch eine Methode erfordert, um zwei Werte zusammenzuführen, wenn sie den gleichen Schlüssel haben (obwohl ich oft auf eine Methode verweise, die in diesem Fall immer auslöst).

HashMap<K, V> myHashMap = listToTransform.stream().map(/* do my transformation here */)
.collect(Item::getKey, Item::getValue, this::throwIllegalArgumentException, HashMap::new);