从arraylist中提取数据

时间:2013-01-19 18:57:10

标签: java arrays arraylist

我有一个文件样本列表

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

现在我被困在了arraylist

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];
     }

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

线程中的异常&#34; AWT-EventQueue-0&#34; java.lang.IndexOutOfBoundsException:索引:227,大小:227

我想要这个输出:

firstname
anne
dougie

lastname
smith
miller

age
6
8

我该怎么做?

2 个答案:

答案 0 :(得分:0)

我考虑使用更简单的解决方案,使用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();
}

答案 1 :(得分:0)

如果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]);
  }
}