如何使用openCSV读入单独的arrayLists?

时间:2017-01-24 14:46:21

标签: java arraylist sequential 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));
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。首先关闭CSVReader readAll方法读取整个文件并返回一个List,以便在代码中更改myEntries.add(reader.readAll());到myEntries.addAll(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 javadocs以获取更多信息。

相关问题