Cerco di unire due mappemergeMaps non funziona quando la prima mappa non ha elementi?
private void mergeMaps(HashMap<String, FailureExample> current,
HashMap<String, FailureExample> other) {
current.forEach((k, v) -> other.merge(k, v,
(v1, v2) -> {
FailureExample answer = new FailureExample();
addFromListWithSizeLimit(v1, answer);
addFromListWithSizeLimit(v2, answer);
// answer.requests.addAll(v1.requests);
// answer.requests.addAll(v2.requests);
return answer;
}));
}
ma quando la corrente ha 0 elementi, il lambda non viene eseguito.
L'unione non dovrebbe essere eseguita nel caso in cui non sia possibile un'unione?
voglio:
map1{} ; map2{<a,<a1>>} returns map3{<a,<a1>>}
map1{<a,<b1>>} ; map2{<a,<a1>>} returns map3{<a,<a1, b1>>}
dimenticare che si sta tentando di unire le mappe per un secondo, e immaginate di chiamare 'forEach' su una lista vuota: quante volte avrebbe il lambda essere eseguito? –
Oltre al fatto che stai modificando la mappa 'other', in altre parole,' map2' e 'map3' sono identici, il codice fa esattamente ciò che descrivi. Non è chiaro il motivo per cui ti aspetti qualcosa di diverso e per quale motivo. Quando entrambe le mappe hanno chiavi disgiunte, l'espressione lambda non verrà eseguita neanche. – Holger