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

Java嵌套ArrayList取最后元素方法未通过综合测试问题求助

问题定位与修复方案

触发运行异常的核心问题

  • 错误的元素空判断逻辑
    原代码中!o.equals(null)的写法存在两个致命问题:当o本身为null时,直接调用实例方法equals会触发空指针;即便o非null,对象.equals(null)的返回值永远为false,完全无法达成筛选非空元素的目的。正确的非空判断应为o != null。
  • 未校验子列表的空值场景
    测试用例明确包含“子列表本身为null”的输入,原代码拿到子列表后直接进入增强for循环,底层会自动调用data.iterator(),当data为null时直接抛空指针,没有做跳过处理。
  • 缺失空集合的分支判断
    原代码未对空的子集合做跳过逻辑,虽空集合遍历不会直接抛错,但未适配“空集合不参与元素统计”的业务规则,导致多类输入场景触发异常。

修复后可通过全量测试的实现代码

public static Integer getLastItem(ArrayList<ArrayList<Integer>> list) {
    if (list == null) {
        return null;
    }
    Integer last = null;
    for (ArrayList<Integer> data : list) {
        // 跳过null子列表
        if (data == null) {
            continue;
        }
        // 跳过空集合子列表
        if (data.isEmpty()) {
            continue;
        }
        for (Integer o : data) {
            // 仅非空元素才更新记录
            if (o != null) {
                last = o;
            }
        }
    }
    return last;
}

场景适配说明

  • 外层列表为null、所有子列表为null/空集合时,返回初始值null,匹配对应断言
  • 遍历到值为null的元素时,不会覆盖已记录的最后一个有效元素,符合“元素本身为null时按null返回”的规则
  • 给子列表位置赋值24后,遍历到该有效元素会正确更新返回值,匹配后续断言要求
  • 全流程无空指针触发点,覆盖所有测试分支

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 08:54:03