如何使用 openCSV 读入单独的数组列表?

How to read into separate arrayLists using openCSV?

我正在尝试读取一个包含 3 列和未指定行数的 csv 文件。然后我试图获取每一列并将每一列读入它自己的 arrayList 中。第一列是名字,第二列是分数,第三列是难度。任何帮助将非常感激。 当前代码:

public static void main(String[]args) throws IOException{
    ReadFile f = new ReadFile();
}

public CSVReader reader;

ReadFile(){
    ArrayList myEntries = new ArrayList<>();
    ArrayList<String> nameList = new ArrayList<>();
    ArrayList<String> scoreList = new ArrayList<>();
    ArrayList<String> difficultyList = new ArrayList<>();

    try {
        reader = new CSVReader(new FileReader("H:\S6\AH Computing\Java Practice\leaderboard.csv"));
    } catch (FileNotFoundException ex) {
        Logger.getLogger(ReadFile.class.getName()).log(Level.SEVERE, null, ex);
    }
    try {
        myEntries.add(reader.readAll());
    } catch (IOException ex) {
        Logger.getLogger(ReadFile.class.getName()).log(Level.SEVERE, null, ex);
    }

    for(int i = 1; i< myEntries.size();i++){
        try {
        myEntries.add(reader.readNext());
    } catch (IOException ex) {
        Logger.getLogger(ReadFile.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

    for(int i = 1; i< myEntries.size();i++){
        nameList.add((String) myEntries.get(i));
        i++;
        scoreList.add((String) myEntries.get(i));
        i++;
        difficultyList.add((String) myEntries.get(i));
    }
}

你的代码有几个问题。首先,CSVReader readAll 方法读取整个文件和 returns 一个列表,因此在您的代码中更改 myEntries.add(reader.readAll());至 myEntries.add全部(reader.readAll());

也就是说,既然您已经将整个文件读入内存,则无需执行 readNext。所以删除整个 try/catch。

现在你有一个列表,所以改变

for(int i = 1; i< myEntries.size();i++){
        nameList.add((String) myEntries.get(i));
        i++;
        scoreList.add((String) myEntries.get(i));
        i++;
        difficultyList.add((String) myEntries.get(i));
    }

for(int i = 1; i< myEntries.size();i++){
        String[] entries = myEntries.get(i);
        nameList.add(entries[0]);
        scoreList.add(entries[1]);
        difficultyList.add(entries[2]);
    }

可能需要进行一些类型转换。

您可以在 http://opencsv.sourceforge.net/apidocs/index.html 查看 opencsv javadoc 以获取更多信息。