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

Java如何通过mapper获取Set<Measurement>中指定属性的最大值

解决方法

核心修改点

你只需要调整求最大值的stream调用逻辑,将硬编码的属性读取替换为mapper调用即可,其余原有代码无需改动:
将原代码中:

OptionalDouble maximum = stationAverages.stream().mapToDouble(Measurement::getMaxTemperature).max();

替换为:

OptionalDouble maximum = stationAverages.stream().mapToDouble(m -> mapper.apply(m)).max();

说明

  • 入参mapper是Function<Measurement, Double>类型,调用mapper.apply(Measurement实例)即可动态获取你指定的属性值
  • mapToDouble会自动将mapper返回的Double包装类型拆箱为基础类型double,和原有返回值OptionalDouble的逻辑完全兼容
  • 你已提前在filter阶段过滤了属性值为NaN的情况,无需额外处理异常值

可选优化

如果存在mapper返回null的可能,可以调整filter的判断条件,避免空指针异常:

.filter(m -> m.getDate().isAfter(startDate) &&
        m.getDate().isBefore(endDate) &&
        mapper.apply(m) != null &&
        !Double.isNaN(mapper.apply(m))
)

内容的提问来源于stack exchange,提问作者A. Vreeswijk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:06