2011-10-13 169 views
1

你可以给出任何合理的例子,如ArrayList<ArrayList<E>>,比如声明,初始化,添加元素并迭代它们。这是在Java中获得二维数组行为的方法之一吗?ArrayList的用法<ArrayList<E>>

回答

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); 
    
0

ArrayList的用于保存对象数组。另一方面它可以有重复的值。当你需要快速插入/删除时,你可以使用它。它按照输入的顺序保存值。例如

List<String> ls= new ArrayList<String>(); 
ls.add("foo"); 
ls.add("bar"); 
for(String val:ls){ 
    System.out.println("Value :" + val); 
} 
1

我要添加到约阿希姆·绍尔的答案的唯一的事情是肯定的,一个ArrayList<ArrayList<E>>可以类似于E的二维数组(E[][])有一个额外的扭曲(除一维数组和列表之间的所有常见区别):

使用列表列表,可以使“锯齿状”数组等价。并非所有内部列表都需要具有相同的size(),而在二维数组中,根据定义,E[][]的所有“行”具有相同的长度。这是“矩形”。列表清单不一定是矩形的;它可以是锯齿状的。

相关问题