2011-10-13 230 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[][]的所有「行」具有相同的長度。這是「矩形」。列表清單不一定是矩形的;它可以是鋸齒狀的。

相關問題