java-8过滤列表而不创建新的列表

前端之家收集整理的这篇文章主要介绍了java-8过滤列表而不创建新的列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找最干净的方式来过滤 Java-8中的列表,使用简单的lambda谓词,而不创建新的列表.

特别地,这个解决方案是不合适的,因为toList()返回一个新的List:

List<Person> beerDrinkers = persons.stream()
    .filter(p -> p.getAge() > 16)
    .collect(Collectors.toList());

请注意,以下解决方案也不起作用,因为列表应该清除其原始值(但是显然,如果在过滤之前清除它,则无需过滤…):

persons.stream()
    .filter(p -> p.getAge() > 16)
    .forEach((p) -> persons.add(p));

(另外,我更喜欢不涉及使用第三方库或框架的解决方案)

解决方法

beerDrinkers.removeIf(p -> p.getAge() <= 16);

猜你在找的Java相关文章