У меня есть iteraror, где в каждой итерации I'm создавая новую картуJava 8 карт Объединить в итераторе
Map<String, List<String>>
Теперь я хотел бы объединить в каждой итерации последней излучаемой карты с новым.
Если я посылаю список элементов getMap
{"a","a","b"}
Я ожидаю получить карту
["a",{"foo:a", "foo:a"}, "b",{"foo:b"}]
Я пытаюсь использовать уменьшить функцию, а потому, что putall работает только если я использую Multimap а не карта, не является хорошим вариантом.
Вот мой код
public Map<String, List<String>> getMap(List<String> items){
return items().stream()
.map(item -> getNewMap(item) --> Return a Map<String, List<String>>
.reduce(new HashMap<>(), (o, p) -> {
o.putAll(p);
return o;
});
}
public Map<String, List<String>> getNewMap(String item){
Map<String, List<String>> map = new HashMap<>();
map.put(item, Arrays.asList("foo:" + item));
return map;
}
I'm не ищет не многословный способ сделать это.
Подумайте о принятии решения Холгера вместо моего, это намного чище и лучше. – Tunaki