簡體   English   中英

arraylist中的Arraylist

[英]Arraylist in arraylist

我想知道如何動態創建數組列表並將它們添加到包含所有數組列表的數組列表中嗎? 我還想知道如何在for-each循環中從主數組列表中的動態創建的數組列表中讀取內容?

List<Bar> innerList = new ArrayList<Bar>();
// add Bar objects to this list
List<List<Bar>> mainList = new ArrayList<List<Bar>>();
mainList.add(innerList); // adding innerList to mainList
for(List<Bar> listElement:mainList){
     // here listElement will give you an innerList
         for(Bar bar: listElement){
            // gives you a handle to each Bar element stored in
            // listElement
         }
}

考慮使用帶Integer鍵的Guava Multimap

多圖

特別是ArrayListMultimap

Multimap將根據需要為您動態創建內部Lists

要將元素添加到列表集中的任何列表中:

Multimap<Integer, Bar> myMultimap = ArrayListMultimap.create();
myMultimap.put(1, new Bar());

List<Bar> listAtIndex5 = myMultimap.get(5);

Multimap還提供了使用values對所有內部列表中的所有元素進行迭代的機制。 因此,您可以像這樣遍歷整個集合中的每個元素:

for (Bar bar: myMultimap.values()){
    // some work on bar
}

像這樣..

ArrayList<DATA_TYPE> demo = new ArrayList<DATA_TYPE>();
for(DATA_TYPE i:demo)//foreach
{
System.out.println(i); 

}
ArrayList< ArrayList< Foo > > masterList = new ArrayList< ArrayList< Foo > >( );

ArrayList< Foo > subList = new ArrayList< Foo >();

subList.add( new Foo( ) );
subList.add( new Foo( ) );

msterList.add( subList ) );

// repeat

for ( ArrayList< Foo > subList : masterList )
{
  for ( Foo foo : subList )
  {
    System.out.println( foo );
  }
}

您可以像處理任何對象一樣進行操作。

添加到數組列表:

ArrayList<ArrayList> parent = new ArrayList<ArrayList>();
ArrayList<YourDataType> sub = new ArrayList<YourDataType>();
sub.add(new YourDataType());
parent.add(sub);

當您想從該列表中讀取內容時:

for (ArrayList<YourDataType> list : parent){
     for(YourDataType obj : list){

        //access obj
      }

}

如果要訪問特定索引的子ArrayList:

int index = 5;
if(index < parent.size()){
    ArrayList<YourDataType> sub = parent.get(index);
}

在此處查看有關Java列表的完整教程:

List list= new ArrayList();<\`pre`>
List list1= new ArrayList();
list1.add("Example1");
list1.add("Example2");
list.add(list1);
System.out.println(list);

你可以找到兩個arraylist,它們被添加到另外一個<pre>中

您可以使用以下幾行代碼來實現

動態聲明列表

ArrayList<Object> childList = new ArrayList<Object>();
ArrayList<ArrayList<Object>> mainList=new ArrayList<ArrayList<Object>>();

將子列表添加到主列表

  mainList.add(childList);
  mainList.add(new ArrayList<String>());
  mainList.add(new ArrayList<Integer>());
  ........   

要訪問for循環中的列表,

for(ArrayList listobj: mainList){
   for(Object obj : listobj){
     //do something here
  }
}

如果希望所有列表都是同一類型,則可以在子列表聲明中使用該類型而不是Object。但是,如果希望所有子列表都不同,則最好直接使用Object類。

暫無
暫無

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

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