我是java的新手。我需要阅读以下面给出的格式收到的输入数据(csv)(大量记录):
A,1
A,2
B,3
B,4
C,5
C,6
A,7
A,8
B,9
B,10 ...
我正在使用PrintWriter将数据写入新的CSV文件。有没有一种方法可以从上面的数据以这种方式写入新的csv文件?这里的条件基于值A,B,C。
A,B,C
1,3,5
2,4,6
7,9
8,10...
答案 0 :(得分:0)
我认为如果总有A,B和C这是可能的。但是这个想法可以扩展到有限数量的常量
你可以做的就是......
public void computeNewCSV() {
List<Integer> a = new LinkedList<Integer>();
List<Integer> b = new LinkedList<Integer>();
List<Integer> c = new LinkedList<Integer>();
FileInputStream fis = new FileInputStream("input_file");
BufferedReader br = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));
String line;
while ((line = br.readLine()) != null) {
String split[] = line.split(",");
if(split[0].equals("A") {
a.add(Integer.parseInt(split[1]));
} else if (split[0].equals("B") {
b.add(Integer.parseInt(split[1]));
} else if (split[0].equals("C") {
c.add(Integer.parseInt(split[1]));
}
}
br.close();
fis.close();
//Now you have the complete information to be put into the new file.
PrintWriter writer = new PrintWriter("output-file-name", "UTF-8");
writer.println("A,B,C");
while(!(a.isEmpty && b.isEmpty() && c.isEmpty())) {
StringBuilder sb = new StringBuilder("");
if(!a.isEmpty()) {
sb.append(a.remove(0));
}
sb.append(",");
if(!b.isEmpty()) {
sb.append(b.remove(0));
}
sb.append(",");
if(!c.isEmpty()) {
sb.append(c.remove(0));
}
writer.println(sb.toString());
}
writer.close();
}