Angenommen, ich habe eine Integer-Liste und ich verwende Java 8 für jede Methode auf der Liste, um ihre Werte zu verdoppeln. Sagen wir, ich habe den folgenden Code:forEach nicht modifizieren java (8) collection
List<Integer> l = Arrays.asList(2,3,6,1,9);
l.forEach(p->p*=2);
Als forEach Methode Consumer nehmen und nennt es methos akzeptieren. Ich drucke die Liste nach dem Ausführen des obigen Codes und die ursprüngliche Liste ändert sich nicht.
Soweit ich verstehe Strom nicht die Quelle ändern, aber hier nenne ich nur Methode für jedes Element akzeptieren ...
Thank u in advace
Vielen Dank für Ihre Antwort. Aber wenn T irgendeine Objektreferenz ist und ich den Inhalt innerhalb von forEach loop ändere, sollte ich seinen neuen Inhalt sehen. – user1409534
Nein, das ist nicht wahr mit oder ohne lambdas und war es nie. –
@ user1409534 - Sie können den Inhalt eines Objekts ändern, auf das die Objektreferenz verweist, aber die Liste wird nicht aktualisiert. Um die Liste zu aktualisieren (in der Art und Weise, wie Sie es versuchen), müssten Sie den Objektverweis in der Liste durch einen anderen ersetzen. Sie können das nicht mit einem 'forEach()' tun. Und sicherlich wird das Lambda es nicht tun/können. –