我已将数据存储在 List<String[]>
中并且需要使用循环将这些数据存储到另一个字符串数组中。我创建了一个字符串数组( value
)并在其中存储数据,但问题是第一个元素在循环内被第二个元素替换,并且它只会显示循环末尾的最后一个元素。
CSVReader reader = new CSVReader(new FileReader(csvfile));
List<String[]> data = reader.readAll();
String[] values = new String[5];
for (int i = 1; i < 5; i++) {
values = data.get(i);
System.out.println(values[1]); // data is getting replaced here
}
System.out.println(values[1]); // this will show only the last stored value
最佳答案
- 列表采用
0
索引,因此除非您有意跳过第一个元素,否则不要在1
处而不是0
处开始循环迭代>. - 是的,在循环后执行最后一个
println
时,仅显示与最后一个String[]
相关的数据,因为在每次迭代中您都会更新值
即values = data.get(i);
来存储当前的String[]
,从而得到上述结果。 - 您可能需要一个
String[][]
而不是String[]
,因为每个String[]
代表文件的一行.
因此,假设您只想从 data
获取前五行,您可以这样做:
String[][] lines = data.subList(0, 5).toArray(String[][]::new);
或者对于所有读取的行:
String[][] lines = reader.readAll().toArray(String[][]::new);
您可以使用以下方法进行测试:
System.out.println(Arrays.deepToString(lines));
关于java - 如何使用java集合将数据存储在字符串数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53964361/