Я грала з лямбдами 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(…)
для зручності.