gpt4 book ai didi

java - 为输入文件的每一列创建动态列表

转载 作者:行者123 更新时间:2023-11-30 03:07:04 24 4
gpt4 key购买 nike

我需要创建一个工具来创建数据的一些图形表示。我需要查看输入文件,它可以是具有不同列数的任何 .txt 或 .csv,之后,用户可以选择要在图表上表示的数据。

假设我有一个像这样的输入文件:

Column1;Row1;50;20;Column5 
Column1;Row2;60;30;Column5
Column1;Row3;70;40;Column5
Column1;Row4;80;50;Column5
Column1;Row5;90;60;Column5

我需要一些东西来为输入文件的每一列创建一个列表。对于本示例,创建 5 个列表。如果有 10 列,则创建 10 个列表。我尝试了一些列表列表,但我不知道如何动态创建对象:

try {
fis = new FileInputStream("C:/Users/User/Desktop/test1.txt");
reader = new BufferedReader(new InputStreamReader(fis));


String line = reader.readLine();
String[] column = line.split(";");
while(line != null){
singleList.add(column[0]);
line = reader.readLine();
}
listOfLists.add(singleList);

有人可以帮我吗?如果你可以举一个具体的例子(我对 Java 还很陌生)。

最佳答案

请不要使用自定义实现

opencsv

Apache Commons CSV

使用 opencsv 的示例

import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.opencsv.CSVReader;

/**
*
* @author V.Ladynev
*/
public class Example {

public static void main(String[] args) throws Exception {
// Build reader instance
CSVReader reader = new CSVReader(
new FileReader("C:/Users/User/Desktop/test1.txt"), ';', '"');
// Read all rows at once
List<String[]> allRows = readAll(reader);

int colsCount = size(first(allRows));
if (colsCount == 0) {
return;
}

List<List<String>> result = new ArrayList<List<String>>();

for (int colIndex = 0; colIndex < colsCount; colIndex++) {
List<String> col = new ArrayList<String>();
for (String[] row : allRows) {
col.add(get(row, colIndex));
}
result.add(col);
}

System.out.println(Arrays.toString(result.toArray()));
}

public static List<String[]> readAll(CSVReader reader) throws IOException {
try {
return reader.readAll();
} finally {
reader.close();
}
}

public static <T> T first(List<T> items) {
return items == null || items.size() == 0 ? null : items.get(0);
}

public static <T> int size(T[] array) {
return array == null ? 0 : array.length;
}

public static <T> T get(T[] array, int index) {
return size(array) > index ? array[index] : null;
}

}

关于java - 为输入文件的每一列创建动态列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34511141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com