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

如何用Stream API实现返回符合条件Car对象的firstGreatVolumeCar()方法

问题解决:返回首台引擎排量大于3.0的Car对象

你的代码问题出在使用了map(Car::getEngineVolume),这个操作把Stream<Car>转换成了Stream<Double>,后续过滤和findFirst()拿到的是Optional<Double>,自然无法返回Car类型。

修正方法很简单:直接对Car对象流做过滤,不要先转换成数值,具体代码如下:

public Car firstGreatVolumeCar(){
    return cars.stream()
            .filter(car -> car.getEngineVolume() > 3.0) // 直接过滤符合条件的Car对象
            .findFirst()
            .orElse(null); // 若找不到符合条件的Car,返回null;也可以用orElseThrow()抛出异常
}

关键说明:

  • 去掉多余的map操作,保留Stream<Car>的类型
  • 过滤条件直接判断Car对象的engineVolume属性是否大于3.0
  • findFirst()返回Optional<Car>,需要用orElse()/orElseThrow()等方法处理“找不到符合条件对象”的情况,否则编译会报错(因为方法声明返回Car,而Optional<Car>不能直接赋值给Car)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:24:50