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

ArrayList按organizationName搜索无结果,请求技术排查解决

问题分析与修复

核心错误点

你的searchAddress方法存在两个关键问题:

  1. 空指针风险+判断顺序错误:先调用d.getOrganizationName().toLowerCase()再判断是否为null,若organizationName本身是null,这一步会直接抛出NullPointerException,导致方法中断。
  2. 大小写匹配逻辑错误:仅将搜索关键词转小写,但未将目标字符串organizationName转小写后再做包含判断,导致"Anth"无法匹配"anth"(contains方法会区分大小写)。

修复后的代码

@Override
public List<Address> searchAddress(String search) {
    List<Address> listClone = new ArrayList<>();
    // 提前处理搜索关键词的null情况,避免后续调用toLowerCase()抛空指针
    String lowerSearch = search != null ? search.toLowerCase() : "";
    for(Address d : list){
        // 先判断organizationName是否为null,再转小写执行匹配逻辑
        if(d.getOrganizationName() != null 
           && d.getOrganizationName().toLowerCase().contains(lowerSearch)) {
            listClone.add(d);
        }
    }
    return listClone;
}

可选优化(Java 8+)

用Stream API简化代码,可读性更强:

@Override
public List<Address> searchAddress(String search) {
    String lowerSearch = search != null ? search.toLowerCase() : "";
    return list.stream()
            .filter(d -> d.getOrganizationName() != null)
            .filter(d -> d.getOrganizationName().toLowerCase().contains(lowerSearch))
            .collect(Collectors.toList());
}

关键注意事项

  • 始终先判断字符串是否为null,再调用字符串方法,这是Java避免空指针异常的基础规范。
  • 提前处理搜索关键词的null场景,避免传入null时触发异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:41:43