我在玩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
可以由第三行直接分配变量?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
以后,这里便Collection.removeIf(…)
为您提供方便。