【问题标题】:extracting a data from an arraylist从数组列表中提取数据
【发布时间】:2026-02-11 22:55:02
【问题描述】:

我有这个来自文件的示例列表

firstname, lastname, age
anne, smith, 6
dougie, miller, 8

现在我被数组列表困住了

ArrayList<String[]> rows = new ArrayList<>();
     while ((line = reader.readLine()) != null) {
        String[] row = line.split(",");
        rows.add(row);
    }

    for (String[] row : rows) {
        System.out.println(Arrays.toString(row));
    }

我得到了这些输出:

[firstname,lastname,age]
[anne,smith,6]
[dougie,miller,8]

我尝试过这样做:

String[] x1 = new String[rows.size()+1];
     for(int i=0;i<rows.size();i++){
     String[] lastname = (String[]) rows.get(i+1);
        System.out.println(lastname[1]);
        //x1[i]=lastname[1];
     }

但我似乎无法将姓氏放在一个数组中。它会给我这个错误:

线程“AWT-EventQueue-0”java.lang.IndexOutOfBoundsException 中的异常:索引:227,大小:227

我想要这个输出:

名字
安妮
道吉

姓
史密斯
磨坊主

年龄
6
8

我该怎么做?

【问题讨论】:

  • 您说您没有得到输出,但您向我们展示了您的输出。您还谈到了ArrayList,但您的代码中没有。你能澄清你的问题吗?
  • 您要读取和输出数组列表或文件吗?或者你想从文件中读取文件并初始化arraylist?
  • ArrayList 在哪里?我正在寻找那个...

标签: java arrays arraylist


【解决方案1】:

这个应该可以正常工作,前提是 StringArrays 的大小都相同:

int cols = rows.size() > 0 ? rows.get(0).length : 0;
for (int i = 0; i < cols; i++) {
  for (int j = 0; j < rows.size(); j++) {
    System.out.println(rows.get(j)[i]);
  }
}

【讨论】:

    【解决方案2】:

    我考虑过使用更简单的解决方案,使用Scanner

    File file = new File(filePath);
    try {
        Scanner content = new Scanner(file).useDelimiter("\n");
        while (content.hasNext()) {
            String[] line = content.next().split(",\\s");
            for (String s : line) {
                System.out.println(s);
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    【讨论】: