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

TreeMap按行迭代异常:EntrySet方式跳过起始行且数据乱序

解决TreeMap表格数据按行迭代输出的问题

你的核心问题是错误地通过EntrySet遍历列来输出数据,这会导致按列输出所有行,而非按行整合各列数据;同时未处理列数据长度不一致的情况,引发截断、null值问题。以下是修正方案:

问题根源

  1. EntrySet迭代的是TreeMap的键值对(即每一列及其所有行数据),而非按行维度整合数据,自然无法实现“迭代1输出各列第一行”的需求。
  2. 未处理列数据长度不一致的场景:若某列的行数据列表比其他列短,直接按固定索引取值会出现IndexOutOfBoundsException或null值。

修正思路

  1. 先确定所有列中最长的行数,确保遍历到所有行数据,避免截断。
  2. 按行索引从0开始循环,每一行遍历所有列名,取出对应行的数据;若当前列无该行数据,用默认值(如空字符串)替代,避免null。

修正代码示例

import java.util.List;
import java.util.TreeMap;

public class TableRowIterator {
    public static void main(String[] args) {
        // 模拟填充的表格数据
        TreeMap<String, List<String>> tableData = new TreeMap<>();
        tableData.put("Name", List.of("Alice", "Bob", "Charlie"));
        tableData.put("Age", List.of("25", "30")); // 该列只有2行数据
        tableData.put("City", List.of("New York", "London", "Paris"));

        // 计算所有列的最大行数,避免数据截断
        int maxRowCount = tableData.values().stream()
                .mapToInt(List::size)
                .max()
                .orElse(0);

        // 按行索引从0开始迭代输出
        for (int rowIdx = 0; rowIdx < maxRowCount; rowIdx++) {
            StringBuilder rowContent = new StringBuilder();
            // 遍历所有列(TreeMap会按列名自然排序)
            for (String colName : tableData.keySet()) {
                List<String> colData = tableData.get(colName);
                // 处理当前列无该行数据的情况,避免null或越界
                String cellValue = rowIdx < colData.size() ? colData.get(rowIdx) : "";
                rowContent.append(colName).append(": ").append(cellValue).append(" | ");
            }
            // 移除末尾多余的分隔符
            if (rowContent.length() > 0) {
                rowContent.setLength(rowContent.length() - 3);
            }
            System.out.println(rowContent);
        }
    }
}

代码说明

  • 按行迭代:外层循环从rowIdx=0开始,严格按行顺序输出,解决“起始行随机”的问题。
  • 处理列长度不一致:通过maxRowCount获取最长列的行数,确保所有行都被输出;同时判断rowIdx是否在当前列的列表范围内,避免null值或异常。
  • 有序列输出:TreeMap的keySet()会按列名自然排序,保证每次输出的列顺序一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:55:34