Ich spielte mit Java 8 Lambdas, um Sammlungen einfach zu filtern. Aber ich habe keine übersichtliche Methode gefunden, das Ergebnis als neue Liste innerhalb derselben Anweisung abzurufen. Hier ist meine knappste Ansatz so weit:Abrufen einer Liste aus einem java.util.stream.Stream in Java 8
List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
Beispiele im Netz antwortete nicht auf meine Frage, weil sie ohne Erzeugen eines neuen Ergebnisliste stoppen. Es muss einen prägnanteren Weg geben. Ich habe erwartet, dass, dass die Stream
Klasse verfügt über Methoden wie toList()
, toSet()
, ...
Gibt es eine Möglichkeit, dass die Variablen targetLongList
können direkt von der dritten Zeile zugeordnet werden werden?
Falls Sie die 'sourceLongList' danach nicht benötigen, gibt es ['Collection.removeIf (...)'] (http://docs.oracle.com/javase/8/docs/api/java/util/Collection .html # removeIf-java.util.function.Predicate-). – Holger