Bawiłem się lambdami Java 8, aby łatwo filtrować kolekcje. Ale nie znalazłem zwięzłego sposobu na uzyskanie wyniku jako nowej listy w ramach tej samej instrukcji. Oto moje najbardziej zwięzłe podejście do tej pory:
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);
Przykłady w sieci nie odpowiedziały na moje pytanie, ponieważ zatrzymały się bez wygenerowania nowej listy wyników. Musi być bardziej zwięzły sposób. Liczyłam, że Stream
klasa ma sposobów toList()
, toSet()
...
Czy istnieje sposób, aby zmienne targetLongList
można przypisać bezpośrednio w trzecim wierszu?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
później, jestCollection.removeIf(…)
dla wygody.