【发布时间】:2016-10-07 15:40:49
【问题描述】:
我有一个 CSV 文件,我必须将其读取到二维字符串数组(它必须是二维数组)
但它有不同的列号,例如:
一、二、三、四、五
1,2,3,4
所以我想将它们读入一个数组。我拆分它一切都很好,但是我不知道如何不使用 NULL 填充缺失的列。
前面的例子是:
0:一、二、三、四、五(长度为5)
1: 1,2,3,4,null(长度 5)
但是我希望下一行的长度是 4 而不是 5 没有 null。
这可能吗?
这是我到目前为止所取得的成果(我知道这很糟糕):
public static void read(Scanner sc) {
ArrayList<String> temp = new ArrayList<>();
while(sc.hasNextLine()) {
temp.add(sc.nextLine().replace(" ", ""));
}
String[] row = temp.get(0).split(",");
data = new String[temp.size()][row.length];
for (int i = 0; i < temp.size(); ++i) {
String[] t = temp.get(i).split(",");
for (int j = 0; j < t.length; ++j) {
data[i][j] = t[j];
}
}
}
【问题讨论】:
-
请出示您的代码
-
抱歉添加到帖子中
-
你能知道数组的长度吗?我的意思是在阅读了 csv 之后,你能确定哪个必须是数组的长度吗?我问这个是因为一旦初始化了对象,就无法调整它的大小。
-
您可以使用 List
例如仅添加包含值且不为空的元素。 -
好吧,我无法确定,这就是问题所在。对此有一个测试: data[0] = 一、二、三、四、五 -> 长度必须是 5 数据[1] = 1,2,3,4 -> 长度必须是 4 并且在同一个 2D 中数组
标签: java csv multidimensional-array split