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

拆分Excel Cell集合为固定大小子ArrayList并提取各子数组最大值问题排查

问题根因
  • 最大值变量未按分区重置:max变量在所有分区处理前仅初始化一次,处理完前一个分区后的最大值会被带到后续分区的比对逻辑中,最终得到的是遍历到当前位置的全局最大值,而非当前子数组的最大值。
  • 最大值添加逻辑位置错误:high.add(max)被放在子数组遍历的内层循环中,每遍历一个元素就会向结果列表添加一次最大值,每个长度为N的子数组会生成N-1条结果,最终结果数量远超过分区总数。
修正后代码
int partitionSize = 50;

List<List<Cell>> partitions = new ArrayList<>();
List<Cell> high = new ArrayList<>();

// 分区生成逻辑无问题,保留原有实现
for (int i = 1590; i < data.size() - 700; i += partitionSize) {
    partitions.add(data.subList(i, Math.min(i + partitionSize, data.size() - 700)));
}

for (List<Cell> list : partitions) {
    // 空分区防御,避免索引越界
    if (list.isEmpty()) {
        continue;
    }
    // 每个分区处理前,重置最大值为当前分区的第一个元素
    Cell max = list.get(0);
    for (int i = 1; i < list.size(); i++) {
        if (list.get(i).getNumericCellValue() > max.getNumericCellValue()) {
            max = list.get(i);
        }
    }
    // 遍历完整个分区后,仅添加一次当前分区的最大值
    high.add(max);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:45:06