2017-09-09 3 views
-1

事前にご注意いただきありがとうございます。 私の状況を説明しますが、私はarraylistを複数のarraylistに分ける必要があります。 たとえば、50個のアイテムしか渡すことができないAPIのリクエストを行う必要があります。ときどき私は50以上の項目を照会する必要があるので、私はapiのために2つの要求をする必要があり、それぞれ50項目あります。もう1つの状況は、120アイテムの配列で、3つのリクエストを作成する必要があります。最初の2つは50アイテムを渡し、3つ目は最後の20アイテムを使うため、このメインを分割したいと思います私はこれを行うために使用しているコードですが、私は成功していない、私はこれのためのより良い解決策を知りたいと思います。ありがとうございました!arraylistを同じサイズの複数のarraylistに分割する方法は?

private ArrayList<String> idsVideos = new ArrayList<>(); 
private ArrayList<String> testeTrab = new ArrayList<>(); 
private ArrayList<ArrayList<String>> videosArrays= new ArrayList<>();  

for (int i =0; i < idsVideos.size(); i++){ 

         if (testeTrab.size() == 50) { 
          videosArrays.add(testeTrab); 
          testeTrab.clear(); 
         } 
         testeTrab.add(idsVideos.get(i)); 
         idsVideos.remove(i); 
        } 


        if (testeTrab.size() > 0 && videosArrays.size() > 0) { 
         videosArrays.add(testeTrab);  
         testeTrab.clear(); 

        } 

答えて

1

リストは変更されませんならば、あなたはList<E>サポート元のリストの「スライス」を返す簡易メソッドList<E> subList(int fromIndex, int toIndex)などのデータの各チャンクのためArrayList<String>を作成する必要はありません。

これは、idsVideos.subList(0,50)が最初の50要素を含むリストを返すことを意味します。今度は、最後に到達するまで要素50を50にする必要があります。idsVideos.size()%50 != 0の場合は、部分的になります。

final int CHUNK_SIZE = 50; 

for (int i = 0; i < idsVideos.size(); i += CHUNK_SIZE) { 
    List<String> chunk = idsVideos.subList(i, Math.min(i + CHUNK_SIZE, idsVideos.size())); 
    .. 
} 
+0

こんにちはジャック、本当にありがとう、これは私が欲しいものでした、完璧に働いて、あなたのすべてのニーズを満たして、天才ありがとう! –

関連する問題