2016-09-24 63 views
2

下面的ArrayList是一個大小爲零的二維ArrayList。我將storeIds分成ArrayList的一部分,並將它們添加到2D ArrayList的內部ArrayList中。如何初始化一個二維ArrayList的內部ArrayList

ArrayList<ArrayList<String>> partStoreIds = new ArrayList<ArrayList<String>>(parts);  
for(int i = 0; i < parts; i++) 
    { 
     System.out.println("Executing part: " + i); 
     int maxIndex = Math.min(storeIds.size(), querySize*(i+1)); 
     //The below line is throwing an exception 
     partStoreIds.addAll(storeIds.subList(querySize*i, maxIndex));   

    } 
+0

請發佈完整的堆棧跟蹤。另外,'storeIds'有哪些類型? – Turing85

+0

你目前的做法有什麼問題? –

+0

對不起@ Turing85。 storeIds是類型列表 kai

回答

2

什麼您嘗試實現可以​​做到爲下一個:

partStoreIds.add(new ArrayList<>(storeIds.subList(querySize*i, maxIndex))); 

事實上,正如partStoreIdsArrayListArrayList只有ArrayList實例可以添加,因爲storeIds.subList(querySize*i, maxIndex)返回List,則需要使用構造函數new ArrayList(Collection)將其首先轉換爲ArrayList

但一個更簡單的方法是聲明你partStoreIds作爲ListList,那麼您可以添加您subList直接作爲下一個:

List<List<String>> partStoreIds = new ArrayList<>(parts); 
... 
    partStoreIds.add(storeIds.subList(querySize*i, maxIndex)); 
2

你需要創建一個新的ArraraList,然後添加項目

ArrayList<String> temp=new ArrayList<String>(); 
temp.addAll(storeIds.subList(querySize*i, maxIndex)); 
partStoreIds.add(temp); 
+0

一些解釋將是有益的。 – Turing85