【问题标题】:How to read a .csv file into an array list in java?如何将 .csv 文件读入 java 中的数组列表?
【发布时间】:2017-02-11 00:33:10
【问题描述】:

我有一个大学作业,要求我从 .csv 文件中获取数据,然后读取、处理并以三种不同的方法打印。这些说明要求我将数据读入一个数组列表,我已经编写了一些代码来这样做,但我只是不确定我是否正确地完成了它。有人能帮我理解我应该如何将文件读入数组列表吗?

我的代码:

public void readData() throws IOException { 
    int count = 0;
    String file = "bank-Detail.txt";
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line = "";
        while ((line = br.readLine()) != null) {

            bank.add(line.split(","));

            String[][] v = (String[][]) bank.toArray(new String[bank.size()][12]);

        }
    } catch (FileNotFoundException e) {

    }
}

【问题讨论】:

  • 您正在阅读的文件是否有固定架构?
  • @Kot 文件大约 600 行,每行 12 个逗号分隔的部分
  • 您应该注意字符串数组和 ArrayList 不是一回事。如果说明需要 ArrayList,那么您应该查看该类。
  • 您需要能够正确处理引号吗?这些可以在 CSV 中的字段周围使用,如果字段包含逗号,则需要使用它们。

标签: java arrays arraylist


【解决方案1】:

您不需要2D 数组来存储文件内容,可以使用 String[] 数组的列表,例如:

public List<String[]> readData() throws IOException { 
    int count = 0;
    String file = "bank-Detail.txt";
    List<String[]> content = new ArrayList<>();
    try(BufferedReader br = new BufferedReader(new FileReader(file))) {
        String line = "";
        while ((line = br.readLine()) != null) {
            content.add(line.split(","));
        }
    } catch (FileNotFoundException e) {
      //Some error logging
    }
    return content;
}

此外,最好在本地声明 list 并从 method 返回它,而不是在您的情况下将元素添加到共享的 list(“银行”)中。

【讨论】:

  • 不错,但更酷的是,将分隔符作为 CSV 的参数,它并不总是逗号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2022-09-26
  • 2015-11-10
  • 2012-03-09
  • 1970-01-01
相关资源
最近更新 更多