下面的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));
}
答案 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)));
实际上,由于partStoreIds
是ArrayList
个ArrayList
,只能添加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));