如何在Java中循环使用2D ArrayList并填充它?

use*_*610 0 java arrays arraylist

我正在尝试在Java中使用2D数组列表.我有定义:

ArrayList<ArrayList<Integer>> myList = new ArrayList<ArrayList<Integer>>();
Run Code Online (Sandbox Code Playgroud)

我如何循环并输入从1开始的数字?我知道我可以使用以下方法访问特定索引:

myList.get(i).get(j)
Run Code Online (Sandbox Code Playgroud)

哪个会得到价值.但是我如何添加到Matrix?

谢谢

bpg*_*eck 6

您可以使用嵌套for循环.i循环遍历外部ArrayList,j循环遍历每个包含的ArrayListmyList

for (int i = 0; i < myList.size(); i++)
{
    for (int j = 0; j < myList.get(i).size(); j++)
    {
        // do stuff
    } 
}
Run Code Online (Sandbox Code Playgroud)

编辑:然后通过替换// do stuff来填充它

myList.get(i).add(new Integer(YOUR_VALUE)); // append YOUR_VALUE to end of list
Run Code Online (Sandbox Code Playgroud)

注意:如果myList最初未填充,则循环使用.size() 将无效,因为您无法.get(SOME_INDEX)在不ArrayList包含索引的情况下使用.您需要从0循环到要添加的值的数量,在第一个循环中创建一个新列表,用于.add(YOUR_VALUE)在每个迭代中将新值附加到此新列表,然后将此新列表添加到myList.请参阅Ken的答案以获得完美的例子.

  • @bpgeck我知道.最初的问题有点尴尬.尽管如此,你还需要做一些小修正......应该是`myList.get(i).add(整数)`.`myList.get(i).get(j)`会得到那个索引的整数,使用`add()`将不起作用 (2认同)

raj*_*uGT 6

如果您使用的是Java 1.5之前的版本,请使用for-each循环.

for(ArrayList<Integer> row : myList) {

  for(Integer intValue : row) {

     // access "row" for inside arraylist or "intValue" for integer value.

  }

}
Run Code Online (Sandbox Code Playgroud)