You need to enable JavaScript to run this app. 如何实现Java指定索引子列表升序判断方法并修复测试不通过问题
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Java指定索引子列表升序判断方法并修复测试不通过问题

原代码问题定位
  • 完全缺失边界校验逻辑,遇到外层列表为null、索引越界、指定位置子列表为null的场景会直接抛出空指针或索引越界异常,无法返回测试要求的false
  • 循环逻辑直接复用入参变量i,代码可读性差,易引入潜在逻辑bug
需覆盖的校验规则(完全匹配测试用例要求)
  • 外层列表为null时直接返回false
  • 传入的索引i小于0或大于等于外层列表长度时,直接返回false
  • 指定索引位置的子列表为null时直接返回false
  • 空子列表按规则判定为升序,返回true
  • 遍历子列表时,只要出现前一个元素大于后一个元素,直接返回false
  • 遍历完成无逆序场景则返回true
修改后的实现代码
public static boolean isAscending(ArrayList<ArrayList<Integer>> list, int i) {
    // 外层列表为空直接返回false
    if (list == null) {
        return false;
    }
    // 索引越界直接返回false
    if (i < 0 || i >= list.size()) {
        return false;
    }
    ArrayList<Integer> data = list.get(i);
    // 子列表为空直接返回false
    if (data == null) {
        return false;
    }
    // 独立使用循环变量检查升序,避免污染入参
    for (int j = 0; j < data.size() - 1; j++) {
        if (data.get(j) > data.get(j + 1)) {
            return false;
        }
    }
    // 空列表、无逆序的列表均符合升序要求
    return true;
}
测试用例适配说明
  • 传入null外层列表:触发第一层校验返回false,匹配综合测试用例的空列表判定要求
  • 传入空外层列表取索引0:触发索引越界校验返回false,匹配基础测试对emptyList的判定
  • 传入负索引、超出外层列表长度的正索引:触发索引校验返回false,匹配oneRow场景下的三个assertFalse判定
  • 空子列表:data.size()为0时循环不执行,直接返回true,匹配空升序列表的判定规则
  • 元素相等的升序列表(如[20,20]):比较时不触发逆序判定,最终返回true,匹配元素修改后的测试要求

内容的提问来源于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 07:15:04