ArrayList <arraylist <e>&gt; </arraylist <e>的用途是什么

时间:2011-10-13 06:37:54

标签: java collections

您能为ArrayList<ArrayList<E>>提供任何合理的示例,例如声明,初始化,添加元素和迭代它们。这是在Java中获取二维数组行为的方法之一吗?

3 个答案:

答案 0 :(得分:6)

是的,ArrayList<ArrayList<E>>类似于EE[][])的二维数组。它具有使用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);
}