gpt4 book ai didi

java - 使用二维数组填充行和单元格时遇到困难

转载 作者:行者123 更新时间:2023-12-01 23:45:26 25 4
gpt4 key购买 nike

有一个 HashMap:

HashMap<String, Object> matrix = new HashMap<String, Object>();

考虑到该对象是一个带有数据的ArrayList:

for (int i = 0; i < matrix.keySet().size() * 2; i += 2) {           
keyRow.createCell(i).setCellValue(matrix.keySet().toArray()[i / 2].toString());
for (int j = 5; j < (((ArrayList<String>) matrix.get(matrix.keySet().toArray()[i / 2].toString())).size() + 5); j++) {
valueRow = worksheet.createRow((short) j);
valueRow.createCell(i).setCellValue(((ArrayList<String>) matrix.get(matrix.keySet().toArray()[i / 2].toString())).toArray()[j - 5].toString());
}
}

如您所见,外部循环使用 HashMap 的 keySet() 的字符串填充 keyRow,同时在其间留下一个空单元格(它会增加 2)。内部循环应该用每个相应的值填充每个键下的单元格(这是一个具有更多值的 ArrayList,这就是另一个循环的原因)。除了 APACHE POI worksheet.createRow() 方法覆盖之前的结果,给出仅正确填充一个键的最终结果之外,它的工作效果非常好。

你知道我该如何解决这个问题吗?非常感谢您。

最佳答案

你的代码很幼稚;学习正确使用 Collections API、完整的泛型类型、Iterable for 循环,并且不要无意义地使用 toArray()、map gets 或 Short。

我建议你尝试:

Map<String, ArrayList<String>> matrix = new HashMap<String, ArrayList<String>>();

int cell=0;
int row=0;
for (Map.Entry<String,Object> e : matrix.entrySet()) {
worksheet.createRow(row++).createCell(cell).setCellValue(e.getKey());
Row valueRow = worksheet.createRow(row++);
for (String v : e.getValue()) {
valueRow.createCell(cell++).setCellValue(v);
}
}

如果您想要键值的排序列表或源序列列表,您可能需要考虑使用 TreeMap 或 LinkedHashMap。

关于java - 使用二维数组填充行和单元格时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17138426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com