Java 将列表存储到数组

标签 java arrays list

我正在尝试像这样读取 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/

相关文章:

java - 登录后在抽屉导航中显示电子邮件

python - 有效地减去不同形状的numpy数组

python-3.x - 从 Excel 数据创建字典

c# - 可以在泛型方法中使用 IList 但不能使用 List

java - 从 View 中将空字符串作为 null 插入 MySQL DB 中

java - Cloudera Hadoop 500错误

java - 单例设计模式 : Pitfalls

java - 使用单一条件选择数据的有效方法

java - 对数组列表进行排序?树集不起作用。还有其他选择吗?

python - 删除列表中的重复项