Java中使用Stream API的filter方法可对集合进行函数式过滤,返回满足条件的新集合。首先调用stream()方法获取流,接着通过filter()传入Predicate类型的Lambda表达式定义过滤条件,最后用collect()将结果收集为List、Set或数组等类型。例如可过滤字符串长度大于3的元素,或筛选年龄大于等于18的用户对象。支持组合多个条件,使用&&或拆分多个filter提升可读性。还能转换为Set去重或转为数组。原集合不变,始终返回新集合。掌握stream + filter + collect组合即可高效处理常见过滤需求。

在Java中,可以通过Stream API的filter方法对集合进行过滤,并返回一个新的集合。这种方式简洁、函数式,适用于List、Set等常见集合类型。
调用集合的stream()方法,然后使用filter()传入一个Lambda表达式定义过滤条件,最后通过collect()将结果转换为新的集合。
示例:过滤出长度大于3的字符串
List<String> words = Arrays.asList("java", "go", "rust", "c++", "python");
List<String> result = words.stream()
.filter(s -> s.length() > 3)
.collect(Collectors.toList());
System.out.println(result); // 输出: [java, rust, python]
常用于根据对象属性进行筛选,比如过滤年龄大于18的用户。
立即学习“Java免费学习笔记(深入)”;
class User {
String name;
int age;
User(String name, int age) {
this.name = name;
this.age = age;
}
// getter方法
public int getAge() { return age; }
}
List<User> users = Arrays.asList(
new User("Alice", 25),
new User("Bob", 17),
new User("Charlie", 30)
);
List<User> adults = users.stream()
.filter(u -> u.getAge() >= 18)
.collect(Collectors.toList());
可以在filter中使用逻辑运算符组合多个条件。
List<User> result = users.stream()
.filter(u -> u.getAge() >= 18 && u.getName().startsWith("A"))
.collect(Collectors.toList());
也可以拆分成多个filter调用,提高可读性:
List<User> result = users.stream()
.filter(u -> u.getAge() >= 18)
.filter(u -> u.getName().length() > 4)
.collect(Collectors.toList());
除了List,还可以轻松转为Set或Array。
// 转为Set避免重复
Set<String> unique = words.stream()
.filter(s -> s.contains("a"))
.collect(Collectors.toSet());
// 转为数组
String[] array = words.stream()
.filter(s -> s.length() > 4)
.toArray(String[]::new);
基本上就这些。只要掌握stream + filter + collect这个组合,就能高效处理大多数集合过滤场景。注意原集合不会被修改,返回的是全新集合。
以上就是在Java中如何通过filter过滤并返回新的集合的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号