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

3
下面的ArrayList是大小为parts的二维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));           

    }

请发布完整的堆栈跟踪。此外,storeIds是哪种类型? - Turing85
你目前的方法有什么问题? - Nicolas Filotto
抱歉,@Turing85。storeIds 的类型是 List<String>。 - Vineeth Chitteti
2个回答

2
您需要创建一个新的 ArraraList,然后向其添加项目。
ArrayList<String> temp=new ArrayList<String>();
temp.addAll(storeIds.subList(querySize*i, maxIndex));
partStoreIds.add(temp);

一些解释会很有益。 - Turing85

2
您想要实现的目标可以按照以下步骤进行:
partStoreIds.add(new ArrayList<>(storeIds.subList(querySize*i, maxIndex)));

实际上,由于partStoreIds是一个ArrayListArrayList,因此只能添加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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接