Ich habe zwei Map
s, die die gleichen Schlüssel haben sollen (Annahme).Kombinieren Kartenwerte in Java 8 mit Streams
Ich brauche eine Aktion auf entsprechende Elemente
Java 7 Code auszuführen:
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);
}
Mein Ziel einer Lambda für einen solchen Betrieb zu verwenden ist
So etwas wie
Map<X,Y> m1, m2;
[initStreamHere](m1, m2).forEachCorrespondingEntry((k, v1, v2)-> doSomething(v1, v2));
Im Allgemeinen könnte es cool sein, wenn v1
oder v2
ist null oder nicht entsprechend dem Vorhandensein oder Nicht des entsprechenden Schlüssels.
Bietet Java eine solche coole Funktion? Oder ist es möglich, mit benutzerdefinierten Code in weniger als 50 Zeilen zu implementieren?
Mein Ziel ist es, einen Lambda-Ausdruck zu verwenden, die
Nur 'forEach' über' m1', capture 'm2' mit' get' mit dem 'm1' Schlüssel durch die bereitgestellten 'forEach' und nenne dein' doSomething'. –
Uhmmm ... Ich habe nur gefragt, ob Java sich um das Lookup auf m2 kümmern könnte und * serve * mir die Ergebnisse :-) Ich habe den Code schon die alte Java 7 Mode implementiert. PS es ist nutzlos, auf m1 zu streamen und auf m2 zu kommen, ich hätte meinem Chef ein eindrucksvolles Beispiel gezeigt sonst –
Erstelle eine 'MultiMap' aus den zwei Karten und streame diese Ergebnisse. Oder erstellen Sie Ihre eigene 'Map' mit zwei Werten und streamen Sie diese (so müssen Sie sich nicht mit einem' Collection'- oder 'List'-Wert befassen). –