2012-02-20 189 views
1

我有一個2D ArrayList,我想從2D ArrayList中的那些中取出一個特定的ArrayList。java中的2D ArrayList

這可能嗎? 如果是,我該怎麼做? 2D arrayList是如何工作的,我已經閱讀了很多內容,但仍然無法理解。我的二維ArrayList有這種形式:

ArrayList<ArrayList<Items>> arrayList = new ArrayList<ArrayList<Items>>(); 

for (int i = 0; i < 10; i++) { 
    ArrayList<Items> row = new ArrayList<Items>(); 

    for (int j = 0; j < 500; j++) 
    { 
     // create the items... 
    } 
} 
+2

我想你需要存儲的信息... – 2012-02-20 22:29:42

+2

阿諾德的新方法,如果有人編輯您的文章,並提高它的質量,作爲一般規則,你不應該回滾到該帖子的以前版本。請閱讀[常見問題](http://stackoverflow.com/FAQ)瞭解關於此主題的更多信息。 – 2012-02-20 22:36:31

+0

好的理查德,我很抱歉 – 2012-02-20 22:46:58

回答

5

從頂部開始:其實

Is this possible?

是的,很簡單:

ArrayList innerList = arrayList.get(listIndex); 

How does the 2D ArrayList work?

基本上,它作爲一個數組的數組,所以當你訪問2D列表中的一個元素時,返回一個ArrayList,你必須進一步調用get()來獲得你想要的元素。

例子:

ArrayList innerList = (ArrayList) arrayList.get(listIndex); // returns an arraylist 
Item item = (Item) innerList.get(innerListIndex); // returns your item 
7

是的,這是可能的。

既然你有一個ArrayList< ArrayList<Items> >當你打電話arrayList.get()這將返回一個ArrayList。然後你可以繼續做任何你需要的事情。

例如:

for(int i = 0; i < arrayList.length(); i++){ 
    ArrayList<Items> innerList = arrayList.get(i); 
    for(int j =0; j < 10; j++){ 
     innerList.add(new Items()); 
    } 
} 

這將帶你做上面您的十週的ArrayList,並填寫每個人的十個項目。

1

編輯:這個答案是針對問題的原始版本(這有點難以理解)。

如果我正確理解你,你想要將許多列表拼合成一個。

List<List<String>> listOfLists = new ArrayList<List<String>>(); 
for (int i = 0; i < 5; i++) { 
    List<String> thisList = Arrays.asList("a", "b", "c"); 
    listOfLists.add(thisList); 
} 

// flatten 
List<String> flattenedListOfStrings = new ArrayList<String>(); 
for (List<String> listOfString : listOfLists) { 
    flattenedListOfStrings.addAll(listOfString); 
} 

// test 
for (String string : flattenedListOfStrings) { 
    System.out.print(string); 
} 

輸出:

abcabcabcabcabc