2016-09-24 9 views
2

아래 ArrayList는 크기 부분의 2 차원 ArrayList입니다. storeIds를 ArrayList의 일부로 나누고 2D ArrayList의 내부 ArrayList에 추가합니다. partStoreIds이기 때문에,2 차원 ArrayList의 내부 ArrayList를 초기화하는 방법

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

사실 :

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

이 무엇을 달성하려고하는 것은 다음과 같이 수행 할 수 있습니다 해 새로운 ArraraList 다음 추가 항목을 작성해야 ArrayListArrayList이고 ArrayList 인스턴스 만 추가 할 수 있으며 storeIds.subList(querySize*i, maxIndex)은를 반환합니다.이면 생성자 new ArrayList(Collection)을 사용하여 먼저 ArrayList으로 변환해야합니다.

하지만 훨씬 간단한 방법은 직접으로 옆 subList을 추가 할 수 있습니다, 당신의 partStoreIdsListList A와를 선언하는 것입니다 :

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

당신은

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

일부 설명 유용 할 것입니다. – Turing85

관련 문제