Powiedzmy, że mam listę Integer i używam metody Java 8 forEach na liście, aby podwoić jej wartości. Say mam następujący kod:forEach nie modyfikuj kolekcji java (8)
List<Integer> l = Arrays.asList(2,3,6,1,9);
l.forEach(p->p*=2);
Jako metody foreach podjęcia konsumentów i wzywa go zaakceptować Methos. Wydrukuję listę po uruchomieniu powyższego kodu, a oryginalna lista nie zmienia się.
O ile mi zrozumieć Stream nie zmienia źródło, ale tutaj po prostu zadzwonić przyjąć metodę na każdym elemencie ...
Thank u w advace
Dziękuję za odpowiedź. Ale jeśli T jest jakimś obiektem odniesienia i zmieniam jego zawartość w pętli forEach, powinienem zobaczyć jej nową zawartość. – user1409534
Nie, to nieprawda z lambdami lub bez nich i nigdy nie było. –
@ user1409534 - Można zmienić zawartość obiektu, do którego odwołuje się obiekt, ale nie aktualizuje listy. Aby zaktualizować listę (w sposób, w jaki próbujesz to zrobić), musisz zamienić odniesienie do obiektu na liście na inny. Nie możesz tego zrobić za pomocą 'forEach()'. I oczywiście lambda nie będzie/nie może tego zrobić. –