Я играл с лямбдами 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);
Примеры в сети не ответили на мой вопрос, потому что они останавливаются без создания нового списка результатов. Должен быть более лаконичный способ. Я бы ожидал, что Stream
класс имеет методы , как toList()
, toSet()
...
Есть ли способ, которым переменные targetLongList
могут быть непосредственно назначены третьей строкой?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
потом естьCollection.removeIf(…)
для удобства.