我在尝试使用Java 8的lambda表达式来轻松过滤集合。但是我没有找到一种简洁的方式来在同一语句中将结果作为新列表检索出来。以下是目前我最简洁的方法:
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
?
sourceLongList
,可以使用Collection.removeIf(…)
进行方便的操作。请注意,该方法可以移除满足特定条件的元素。 - HolgerList<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
- leeyuiwah