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

Java 8中如何用Comparator处理Null值并排除价格为Null的元素?

解决方案

要排除getPrezzoUltimoAcquisto为null的元素,只需要在查找最大日期条目之前,先过滤掉这类无效数据即可。利用Java 8的Stream API可以简洁实现这个需求,修改后的代码如下:

public static Double getUltimoPrezzo(List<ArticoliPerFornitore> lista) {
    try {
        return lista.stream()
                // 过滤掉价格为null的元素
                .filter(item -> item.getPrezzoUltimoAcquisto() != null)
                // 按getDataUltimoAcquisto日期倒序找最新条目
                .max(Comparator.comparing(ArticoliPerFornitore::getDataUltimoAcquisto))
                // 提取价格,过滤后无有效元素则返回null
                .map(ArticoliPerFornitore::getPrezzoUltimoAcquisto)
                .orElse(null);
    } catch (Exception e) {
        log.logStackTrace(e);
        return null;
    }
}

关键修改说明:

  • 过滤逻辑:通过filter直接剔除价格为null的条目,确保后续只处理有有效价格的数据
  • 链式调用优化:将过滤、查找最新条目、提取价格的逻辑整合,比原Collections.max写法更清晰直观
  • 空结果兼容:用Optional的orElse(null)处理过滤后无元素的情况,保持原有方法返回null的行为一致

修改后,当列表仅存在价格为null的元素时,方法返回null;若有有效价格的元素,则会返回日期最新的那个有效价格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:18:25