/ / Como converter um fluxo em um HashMap (não em Mapa) em Java 8 - java, java-8, hashmap, java-stream

Como converter um fluxo em um HashMap (não no Mapa) no Java 8 - java, java-8, hashmap, java-stream

Eu tenho um fluxo e quero coletá-lo explicitamente em um HashMap. No momento, estou fazendo algo como

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()));

Fiquei me perguntando se havia uma maneira de usar os coletores para recuperar explicitamente um HashMap.

Respostas:

6 para resposta № 1

Uma das sobrecargas para o Collectors.toMap O método permitirá que você selecione uma implementação de mapa de sua escolha.

Infelizmente, uma das desvantagens desteA sobrecarga é que ele também requer um método para mesclar dois valores quando eles têm a mesma chave (embora eu faça referência frequentemente a um método que sempre lança nesse caso).

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