在日常的Java开发中,我们经常需要对集合中的数据进行筛选,比如找出所有年龄大于18岁的用户、获取价格低于100的商品等。这时候,Java过滤方法就派上用场了。本教程将带你从零开始,一步步掌握如何使用Java中的过滤技巧,尤其聚焦于Java Stream过滤和Java Predicate过滤这两种主流方式。
简单来说,Java过滤方法就是从一个集合(如List、Set等)中挑选出满足特定条件的元素,组成一个新的集合。在Java 8之前,我们通常使用for循环配合if判断来实现;而Java 8引入了Stream API后,过滤操作变得更加简洁、优雅且功能强大。
Stream是Java 8引入的一个重要特性,它允许我们以声明式的方式处理数据。其中,filter()方法就是专门用于过滤的。
下面是一个简单的例子:假设我们有一个整数列表,想筛选出所有偶数。
import java.util.*;import java.util.stream.Collectors;public class FilterExample { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // 使用Stream过滤出偶数 List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println("偶数列表: " + evenNumbers); // 输出: 偶数列表: [2, 4, 6, 8, 10] }} 代码解析:
numbers.stream():将List转换为Stream流。.filter(n -> n % 2 == 0):使用Lambda表达式定义过滤条件(只保留能被2整除的数)。.collect(Collectors.toList()):将过滤后的结果收集回一个List。Predicate是Java 8函数式接口之一,代表一个“断言”——即一个返回boolean值的函数。我们可以将复杂的过滤逻辑封装成Predicate对象,提高代码的可读性和复用性。
例如,我们有一个User类,想要筛选出年龄大于18且名字长度大于3的用户:
import java.util.*;import java.util.function.Predicate;import java.util.stream.Collectors;class User { String name; int age; public User(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return name + "(" + age + ")"; }}public class PredicateFilterExample { public static void main(String[] args) { List<User> users = Arrays.asList( new User("Alice", 20), new User("Bob", 17), new User("Charlie", 25), new User("Dan", 19) ); // 定义两个Predicate Predicate<User> isAdult = user -> user.age > 18; Predicate<User> nameLongEnough = user -> user.name.length() > 3; // 组合使用:同时满足两个条件 List<User> filteredUsers = users.stream() .filter(isAdult.and(nameLongEnough)) .collect(Collectors.toList()); System.out.println("筛选结果: " + filteredUsers); // 输出: 筛选结果: [Alice(20), Charlie(25)] }} 这里我们使用了Predicate的.and()方法组合多个条件,还可以使用.or()、.negate()等方法实现更复杂的逻辑。
- 从用户列表中筛选活跃用户
- 过滤掉空字符串或null值
- 按照价格、评分、日期等条件筛选商品
这些场景都可以通过Java集合过滤轻松实现。
通过本教程,你已经学会了:
filter()方法进行基本过滤Predicate构建可复用、可组合的过滤逻辑掌握Java过滤方法不仅能让你的代码更简洁,还能提升程序的可维护性和性能。赶快在你的项目中试试吧!
—— 学会过滤,让数据为你所用 ——
本文由主机测评网于2025-12-03发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122482.html