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

Java中无法移除列表内companyId为空元素的问题求助

解决方法

问题根源

触发空指针是因为getCompanyId()返回null时,调用equals(null)会直接抛出NullPointerException——null对象不能调用任何方法。而你之前的流处理只过滤了null的Bean实例,没处理companyId为空的Bean,所以无效。


方法1:直接定位末尾元素移除(最高效)

既然确定目标元素在列表末尾,不用遍历整个列表,直接取最后一个元素判断后移除:

if (!newSRMAPIResponseBeanList.isEmpty()) {
    NewSRMAPIResponseBean lastBean = newSRMAPIResponseBeanList.get(newSRMAPIResponseBeanList.size() - 1);
    // 判断companyId是否为空
    if (lastBean.getCompanyId() == null || lastBean.getCompanyId().isEmpty()) {
        newSRMAPIResponseBeanList.remove(newSRMAPIResponseBeanList.size() - 1);
    }
}

方法2:修复普通for循环

修改判断逻辑,先检查companyId是否为null,同时用倒序遍历避免索引错乱:

for (int i = newSRMAPIResponseBeanList.size() - 1; i >= 0; i--) {
    NewSRMAPIResponseBean bean = newSRMAPIResponseBeanList.get(i);
    if (bean != null && bean.getCompanyId() == null) {
        newSRMAPIResponseBeanList.remove(i);
        // 因为只需要移除末尾的,找到后直接终止循环
        break;
    }
}

方法3:正确使用流处理

在流中添加过滤companyId不为null的条件,生成新列表;或者用removeIf原地修改:

// 生成新列表
List<NewSRMAPIResponseBean> finalList = newSRMAPIResponseBeanList.stream()
        .filter(Objects::nonNull) // 过滤null的Bean实例
        .filter(bean -> bean.getCompanyId() != null) // 过滤companyId为空的Bean
        .collect(Collectors.toList());

// 原地修改原列表
newSRMAPIResponseBeanList.removeIf(bean -> bean == null || bean.getCompanyId() == null);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:48:24