Ich habe mit Java 8 Lambdas herumgespielt, um Sammlungen einfach zu filtern. Ich habe jedoch keinen präzisen Weg gefunden, um das Ergebnis als neue Liste innerhalb derselben Anweisung abzurufen. Hier ist mein bisher prägnantester Ansatz:
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 Internet haben meine Frage nicht beantwortet, da sie aufhören, ohne eine neue Ergebnisliste zu erstellen. Es muss einen prägnanteren Weg geben. Ich hätte erwartet , dass, dass die Stream
Klasse hat Methoden toList()
, toSet()
...
Gibt es eine Möglichkeit, die Variablen targetLongList
direkt durch die dritte Zeile zuzuweisen?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
später nicht brauchen, gibt esCollection.removeIf(…)
für die Bequemlichkeit.