在2d arraylist中添加不同长度的行

时间:2012-02-09 22:31:06

标签: java arrays arraylist

我希望打开一个文本文件,其格式如下,并将其放入2d arraylist,其中每个对象(而不是每一行)都有自己的索引。

5
1 a w e r s 5 2 d 6
f s d e a 3 6 7 1 32
2 f s 6 d
4 s h y 99 3 s d
7 s x d q s 

我尝试了很多解决方案,大多数涉及一段时间(scanner.hasNext())或while(scanner.hasNextLine())循环,将一行中的所有对象分配给他们自己在1d arraylist中的indice,并且然后将该arraylist添加到2d arraylist。但无论我做什么,我都得不到我想要的结果。

我本质上试图做的是诸如scanner .hasNext()方法,它只抓取一行中的下一个对象,并且不会跳转到下一行。我尝试的一个例子如下:

while (scanner.hasNextLine()) {
   ArrayList<Object> array = new ArrayList<Object>();
     while(scanner.hasNext()0 {    

         String line = scanner.next();
         array.add(line);
        }

        System.out.println(array);
        2dArray.add(array);
    }

    scanner.nextLine();
}

2 个答案:

答案 0 :(得分:0)

每次通过外部循环都需要分配一个新数组,而不是清除现有数组。此外,为每一行设置新的扫描仪可能最简单:

while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    Scanner lineScanner = new Scanner(line);
    ArrayList<String> array = new ArrayList<String>();
    while (lineScanner.hasNext()) {
        array.add(lineScanner.next());
    }
    my2Darray.add(array);
}

答案 1 :(得分:0)

使用BufferedReader一次读取一行文件。

BufferedReader br = new BufferedReader(...);
while ((strLine = br.readLine()) != null) {
   String[] strArray = strLine.split("\\s");
   // do stuff with array
}

然后在空格上拆分String,它会给你一个String [],并且很容易转换成List。这样的事情:How do I split a string with any whitespace chars as delimiters?