У меня есть два Map
s, которые должны иметь одинаковые ключи (предположение).Объединение значений карты в Java 8 с потоками
мне нужно выполнить действие на соответствующих элементах
Java 7 Код:
Map<X,Y> m1, m2;
for (Map.Entry<X,Y> kvp: m1.entrySet()) {
K key = kvp.getKey();
Y value1 = kvp.getValue();
Y value2 = m2.get(key);
doSomething(value1, value2);
}
Моя цель заключается в использовании лямбда для такой операции
Что-то вроде
Map<X,Y> m1, m2;
[initStreamHere](m1, m2).forEachCorrespondingEntry((k, v1, v2)-> doSomething(v1, v2));
В целом, это может быть здорово, если v1
или v2
имеет значение null или нет в зависимости от наличия или отсутствия соответствующего ключа.
Является ли Java такой классной функцией? Или можно реализовать с пользовательским кодом менее 50 строк?
Моя цель состоит в том, чтобы использовать лямбда-выражение, которое принимает ключ и две соответствующие значения
Просто '' forEach' над m1', захват 'm2' используя' get' с 'm1' ключа, предоставленной 'forEach' и вызовите' doSomething'. –
Uhmmm ... Я просто спрашивал, может ли Java позаботиться о поиске на m2 и * показать мне результаты :-) Я уже реализовал код старой моды Java 7. PS бесполезно перетекать на m1, и вам нужно попасть на m2, я бы показал моему боссу впечатляющий пример, иначе –
Создайте «MultiMap» с двух карт и передайте эти результаты. Или создайте свою собственную «Карту» с двумя значениями и потоком (чтобы вам не приходилось иметь дело с значением «Коллекция» или «Список»). –