2016-09-24 21 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はList型です kai

答えて

2

何を達成しようとする次のように行うことができ、それに新しいArraraList、その後、追加アイテムを作成する必要がありますArrayListArrayListArrayListのインスタンスのみを追加できます。storeIds.subList(querySize*i, maxIndex)はを返します。の場合は、コンストラクタnew ArrayList(Collection)を使用して最初にArrayListとして変換する必要があります。

しかし、はるかに簡単なアプローチは、あなたが次のように直接ごsubListを追加することができ、ListListとしてあなたpartStoreIdsを宣言するために、次のようになります。

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

関連する問題