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

Spring Boot中如何安全移除列表内缺少指定键的元素且不抛出异常

问题根源

你现有代码没有做空值校验,当Item对象的product属性为null、product下的name属性为null、datas属性为null时,调用对应getter方法或equals方法会直接抛出空指针异常。

修正后代码
import java.util.Objects;

@Override
public List<Item> getcollectionfromapi(List<String> itemids) throws Exception {
    List<Item> collection = itemRepository.findById(itemids);
    // 所有不符合保留条件的对象都会被移除
    collection.removeIf(item -> 
        // product为null直接移除
        item.getProduct() == null
        // product的name为null直接移除
        || item.getProduct().getName() == null
        // name为空字符串直接移除
        || item.getProduct().getName().trim().isEmpty()
        // datas不等于"data"直接移除,用Objects.equals避免datas为null时报错
        || !Objects.equals(item.getDatas(), "data")
    );
    return collection;
}
逻辑说明
  • 所有不满足保留规则的对象都会被直接过滤,不会抛出异常
  • 针对你提供的示例JSON,第二个对象因为product下没有name字段,序列化后getName()返回null,会被正常移除,最终返回结果和你预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:57:03