您能为ArrayList<ArrayList<E>>
提供任何合理的示例,例如声明,初始化,添加元素和迭代它们。这是在Java中获取二维数组行为的方法之一吗?
答案 0 :(得分:6)
是的,ArrayList<ArrayList<E>>
类似于E
(E[][]
)的二维数组。它具有使用List
和在Java中使用数组之间的所有常见差异(List
是更高级别的API,支持调整大小,在任意位置添加元素,......)。
除了它包含的元素实际上是其他List
个对象外,您不会将它与普通List
区别开来:
初始化:
ArrayList<ArrayList<E>> listOfLists = new ArrayList<ArrayList<E>>();
迭代它:
for (ArrayList<E> innerList : listOfLists) {
doSomethingWithInnerList(innerList);
}
加入其中:
ArrayList<E> newInnerList = new ArrayList<E>();
// add stuff to newInnerList
listOfLists.add(newInnerList);
答案 1 :(得分:1)
我想要添加到Joachim Sauer的答案中唯一的答案是,ArrayList<ArrayList<E>>
可以类似于E(E[][]
)的二维数组另外一个扭曲(除了一维数组和列表之间的所有常见差异):
使用列表列表,可以使“锯齿状”数组等效。并非所有内部列表都需要具有相同的size()
,而在二维数组中,根据定义,E[][]
的所有“行”具有相同的长度。它是“矩形”。列表列表不必是矩形;它可以是锯齿状的。
答案 2 :(得分:0)
ArrayList用于保存对象数组。另一方面,它可以有重复的值。当您需要快速插入/删除时,您可以使用它。它以与输入值相同的顺序保存值。例如
List<String> ls= new ArrayList<String>();
ls.add("foo");
ls.add("bar");
for(String val:ls){
System.out.println("Value :" + val);
}