我正在做一个简单的数据帧,它可以读取和写入CSV,同时可以编辑数据。当我试图将一个新列连接到我的数据帧时,遇到了一个问题。
这是文件的示例输入:
Name,Age,Salary
Lim,20,2000
Tan,20,3000
Mah,19,2500
Roger,10,4000
这是我连接列的代码:
String filePath = "...Book1.csv";
String line;
List<List<String>> data = new ArrayList();
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
while ((line = br.readLine()) != null) {
List<String> column = Arrays.asList(line.split(","));
data.add(column);
}
} catch (Exception e) {
System.out.println(e);
}
System.out.println(data.toString());
String [] newColumn = {"Colour", "Green", "Blue", "Black","Yellow"};
for(int i = 0 ; i<data.size(); i++){
List<String> temp = data.get(i);
temp.add(newColumn[i]);
}
System.out.println(data.toString());
输出如下:
[[Name, Age, Salary], [Lim, 20, 2000], [Tan, 20, 3000], [Mah, 19, 2500], [Roger, 10, 4000]]
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.AbstractList.add(AbstractList.java:153)
at java.base/java.util.AbstractList.add(AbstractList.java:111)
at Testing.main(Testing.java:31)
System.out.println(data.toString());
如何更改代码以读取newColumn
并将其存储到data
?
来自Arrays.asList:的Javadoc
返回由指定数组支持的固定大小列表
如果你想添加到一个新的ArrayList中,你需要创建一个。
List<String> column = new ArrayList(Arrays.asList(line.split(",")));