我正在尝试像这样读取 CSV 文件:
1,0,0,0,2,0,0,2,
0,2,0,0,0,0,0,5,
0,0,0,0,0,0,5,0,
这是我的预期结果:
[1, 5, 8]
[2, 8,]
[7]
这是我的 Java 编码:
CSVReader a = new CSVReader(new FileReader("CM.csv"));
List<String[]> aa = a.readAll();
List<Integer> list = new ArrayList<>();
Object[] CM = new Object[3];
for (int i = 0; i < aa.size(); i++) {
for (int x = 0; x < aa.get(i).length-1; x++) {
if ( Integer.parseInt(aa.get(i)[x].trim()) >= 1 ){
list.add(x+1);
}
}
CM[i] = list;
list.clear();
}
for (int i = 0; i < CM.length; i++) {
System.out.print(CM[i]);
System.out.print("\n");
}
但是我得到了 Null 结果。如果我删除 list.clear() 行,则会得到如下奇怪的结果:
[1, 5, 8, 2, 8, 7]
[1, 5, 8, 2, 8, 7]
[1, 5, 8, 2, 8, 7]
我想将列表存储到数组中,请忽略我读取 CSV 文件的方式...
最佳答案
替换list.clear();
与 list = new ArrayList<>();
您正在将列表分配给 CM[i] ,当您调用 list.clear() 时,它会清除列表并将其设置为空列表,因为您的 CM 变量引用列表对象,因此其中不会有任何值。
获取值:
for (int i = 0; i < CM.length; i++) {
List dataList = (List) CM[i];
for (int j = 0; j < dataList.size(); j++) {
// do your stuff
System.out.println(dataList.get(j));
}
}
关于Java 将列表存储到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26284445/