Angular中如何遍历Map<String,List<Number>>生成指定表格?
遍历Map生成指定格式表格的实现方案
假设你使用Java语言,以下是直接可行的实现代码,能将给定的Map<String, List<Number>>转换为目标格式的表格:
import java.util.*; import java.util.stream.Collectors; public class MapToTable { public static void main(String[] args) { // 初始化你的Map数据 Map<String, List<Number>> dataMap = new LinkedHashMap<>(); // 用LinkedHashMap保证插入顺序 dataMap.put("aList", Arrays.asList(1, 2, 3)); dataMap.put("bList", Arrays.asList(4, 5, 6)); dataMap.put("cList", Arrays.asList(7, 8, 9)); // 1. 生成表头行 List<String> headers = new ArrayList<>(dataMap.keySet()); String headerRow = "|" + String.join("|", headers) + "|"; System.out.println(headerRow); // 2. 计算最大行数(兼容列表长度不一致的情况) int maxRowCount = dataMap.values().stream() .mapToInt(List::size) .max() .orElse(0); // 3. 逐行生成表格内容 for (int rowIndex = 0; rowIndex < maxRowCount; rowIndex++) { StringBuilder rowBuilder = new StringBuilder("|"); for (String header : headers) { List<Number> columnData = dataMap.get(header); // 处理列表长度不足的情况,显示空占位 String cellValue = rowIndex < columnData.size() ? String.format(" %s ", columnData.get(rowIndex)) : " "; rowBuilder.append(cellValue).append("|"); } System.out.println(rowBuilder); } } }
关键步骤说明
- 保持列顺序:使用
LinkedHashMap存储数据,保证表头和列的顺序与插入顺序一致;如果不需要固定顺序,用普通HashMap后对表头排序即可。 - 表头生成:直接提取Map的键,拼接成表格的第一行。
- 行内容生成:遍历每个行索引,依次从每个列表中取出对应位置的元素,格式化为带空格的单元格;如果某个列表长度不足当前行索引,用空格占位保证表格对齐。
- 兼容性:代码兼容列表长度不一致的场景,不会因某个列数据少而报错。
如果需要标准Markdown表格的分隔行(即表头下方的|---|---|---|),可以在表头行后添加如下代码:
String separatorRow = "|" + headers.stream() .map(header -> "---") .collect(Collectors.joining("|")) + "|"; System.out.println(separatorRow);
内容的提问来源于stack exchange,提问作者Riven
相关产品推荐
相关产品推荐

