簡體   English   中英

Java中的2D ArrayList

[英]2D ArrayList in java

我有一個2D ArrayList,我想從2D ArrayList內部的那些中獲取一個特定的ArrayList。

這可能嗎? 如果是,我該怎么做? 2D arrayList是如何工作的,我已經讀了很多,但是我還是不明白。 我的2D 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...
    }
}

是的,這是可能的。

由於您在調用arrayList.get()時具有ArrayList< ArrayList<Items> > ,因此將返回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,並用十個項目填充它們。

從頂部開始:

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

是的,當然,您可以從ArrayList中選擇ArrayList。 為此,您可以按照以下兩個步驟操作:

  1. 初始化並聲明2D ArrayList

根據您的問題,您有10行(i = 10)和500列(j = 500)。

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

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

        for (int j = 0; j < 500; j++)
        {
            //add any integers into "row" ArrayList
            row.add(2);
        }
        //add this above 1d "row" ArrayList to our 2D "arraylist" 
        arrayList.add(row);
    }
  1. 從ArrayList獲取元素
    for (int i = 0; i < arrayList.size(); i++) { 
        for (int j = 0; j < arrayList.get(i).size(); j++) { 
            System.out.print(arrayList.get(i).get(j) + " "); 
        } 
        System.out.println(); 
    }

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

如果我對您的理解正確,則希望將許多列表拼合為一個列表。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM