如何遍历字符串arraylist的arraylist?

时间:2017-11-22 20:29:30

标签: java arrays arraylist multidimensional-array iteration

我正在创建一个程序,允许用户与输入的文件进行交互。其中一个选项是显示文件。下面,我首先通过创建由线组成的arraylists将文件存储到arraylist中,然后将由字符串分隔的内部arraylist分隔,用空格分隔。

Scanner sc = new Scanner(fileName);

    while (sc.hasNextLine()) {
        String line = sc.nextLine();
        String[] words = {};
        words = line.split(" ");
        ArrayList<String> lineArray = new ArrayList<String>();
        for (int i = 0; i < words.length; i++) {
            lineArray.add(words[i]);
        }
        fileByLine.add(lineArray);
    }
    sc.close();

我试图打印arraylist的内容,名为fileByLine,因为它们出现在文件中,但我不确定如何操作。有什么建议吗?

case '1':
for(int i = 0; i < fileByLine.size(); i++){
for(int j = 0; j < fileByLine.[i].size(); j++){
System.out.print(fileByLine[i][j]);
  } System.out.println("");
} break;

3 个答案:

答案 0 :(得分:6)

您使用的是用于数组的括号表示法,您需要对arraylists使用get()

for(int i = 0; i < fileByLine.size(); i++){
    for(int j = 0; j < fileByLine.get(i).size(); j++){
        System.out.print(fileByLine.get(i).get(j));
    }
    System.out.println("");
}

答案 1 :(得分:3)

由于您的容器由String type组成,因此您只需将其打印如下:

System.out.println(fileByLine);

无需循环播放您的收藏。例如,假设您有以下列表:

List<String> oneList = new ArrayList<>(Arrays.asList("1 2 3 4 5 6 7".split(" ")));

并且您想将其添加到另一个列表中:

List<List<String>> anotherList = new ArrayList<>();
anotherList.add(oneList);

添加后,您想打印它,它的外观如下:

System.out.println(anotherList);
  

输出:[[1,2,3,4,5,6,7]]

如果您在容器中保留任何其他String type并尝试打印它,那么在custom type方法之前打印它是不可行的。

如果您需要迭代两个嵌套列表,您也可以使用此方法:

override toString()

答案 2 :(得分:0)

或类似的东西......

     for (List list : fileByLine) {
        for (Object line : list) {
            System.out.print(line);
        }
        System.out.println("");
     }