You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Stream从Car列表中筛选指定品牌的车辆?

筛选指定品牌的Car对象列表(Java Stream实现)

要筛选出品牌为指定值的Car对象列表,核心是在Stream流水线中加入filter()操作,它会根据你指定的条件保留符合要求的元素。

基础实现(筛选Mazda品牌)

直接使用filter()结合Lambda表达式判断车辆品牌:

List<Car> mazdaCars = cars.stream()
    // 用字符串常量调用equals避免空指针异常(若getMake()返回null时不会报错)
    .filter(car -> "Mazda".equals(car.getMake()))
    .collect(Collectors.toList());

这里的filter()接收一个Predicate(断言),只有当Lambda表达式返回true的Car对象才会被保留到后续的流中,最后通过collect()收集成列表。

可复用的通用筛选方法

如果需要支持动态指定品牌参数,可以封装成一个通用方法:

public List<Car> filterCarsByMake(List<Car> cars, String targetMake) {
    return cars.stream()
        // 先判断目标品牌不为null,再匹配车辆品牌
        .filter(car -> targetMake != null && targetMake.equals(car.getMake()))
        .collect(Collectors.toList());
}

调用时只需传入目标品牌即可:

List<Car> mazdaCars = filterCarsByMake(cars, "Mazda");

补充说明

  • 区别于你之前用的map():map()是用来转换流中元素的类型(比如把Car转成String类型的品牌),而filter()是用来筛选保留符合条件的原元素(这里就是完整的Car对象)。
  • 空值处理:使用"Mazda".equals(car.getMake())而非car.getMake().equals("Mazda"),是为了避免当car.getMake()返回null时抛出NullPointerException。

内容的提问来源于stack exchange,提问作者pralxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:15:38