如何初始化二维ArrayList的内部ArrayList

时间:2016-09-24 11:08:26

标签: java arrays arraylist

下面的ArrayList是一个大小部分的二维ArrayList。我将storeIds分成ArrayList的部分,并将它们添加到2D 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));           

    }

2 个答案:

答案 0 :(得分:2)

您需要创建一个新的ArraraList,然后向其中添加项目

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

答案 1 :(得分:2)

您尝试实现的目标可以在下一步完成:

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

实际上,由于partStoreIdsArrayListArrayList,只能添加ArrayList个实例,而storeIds.subList(querySize*i, maxIndex)会返回List,需要先使用构造函数new ArrayList(Collection)将其转换为ArrayList

但更简单的方法是将partStoreIds声明为List List,然后您可以直接添加subList作为下一个:

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