Ich mag nicht Abschnitt mit ForEach, aber ich würde nicht wissen, wie man das besser mit Lambda tut.Wie kann ich das mit Lambda besser machen?
list1.stream().map(element -> {
list2.forEach(item -> {
if (element.getKey().equals(item.getKeyNextYear())) {
element.setSummPreviosYear(item.getSumm());
element.setCashboxCountPreviosYear(item.getCashboxCount());
element.setCheckCountPreviosYear(item.getCheckCount());
element.setArticleCountPreviosYear(item.getArticleCount());
}
});
return element;
}).collect(Collectors.toList());
Sie missbrauchen den Kartenoperator hier sehr, und das Sammeln zu einer neuen Liste scheint völlig nutzlos. Gibt es höchstens einen Eintrag in list2 mit einem gegebenen SchlüsselNextYear? Weil Ihr Code O (M * N) ist und wahrscheinlich O (M + N) sein könnte. Wenn es mehrere solche Elemente gibt und Sie das Element wirklich mit dem letzten aktualisieren möchten, sollten Sie rückwärts iterieren und die innere Schleife stoppen, sobald Sie das Element gefunden haben. –