Jestem całkiem nowy w lambdach Java, i nie jestem pewien, czy to, co chcę, jest osiągalne: Mam listę obiektów, które chciałbym filtrować do wyodrębnić te z nich, które są dopasowane do danego stanu, i umieścić je w oddzielnym liście (więc mogę wykonać jakąś operację na nich, zachowując pierwotną listę niemodyfikowana) wymyśliłem to:Java lambdas: Skopiuj węzły z listy do nowej listy
List<Suggestion> only_translations = original_list.stream().
filter(t -> t.isTranslation).
collect(Collectors.toCollection(() -> new ArrayList<Suggestion>()));
Ale nawet jeśli otrzymuję nowy obiekt listy, węzły wydają się być połączone z pierwotnymi (przez odniesienie, a nie nowe obiekty skopiowane z pierwotnej listy), więc modyfikowanie obiektów na nowej liście modyfikuje również obiekty w pierwotnej liście .
Chciałbym wiedzieć, czy można to osiągnąć (używając lambdas, wiem, że mogę to zrobić "klasyczny" sposób iterowania wszystkich elementów) iw tym przypadku, w jaki sposób. Z góry dziękuję!
'collect()' służy do zmiany wartości zmiennej. –
więc ... czego powinienem użyć zamiast tego? – motagirl2
@JudeNiroshan - Zależy od tego, jaką argumentujesz. 'collect (Collectors.toList())', na przykład. –