1. ホーム
  2. java

[解決済み] [Solved] リストをバッチに分割するための一般的なJavaユーティリティはありますか?

2022-04-16 20:06:01

質問

私はリストを与えられたサイズのバッチに分割するユーティリティを自分で書きました。私はちょうどこのためのapache commons utilがすでにあるかどうかを知りたかったのです。

public static <T> List<List<T>> getBatches(List<T> collection,int batchSize){
    int i = 0;
    List<List<T>> batches = new ArrayList<List<T>>();
    while(i<collection.size()){
        int nextInc = Math.min(collection.size()-i,batchSize);
        List<T> batch = collection.subList(i,i+nextInc);
        batches.add(batch);
        i = i + nextInc;
    }

    return batches;
}

同じようなユーティリティが既にあれば教えてください。

解決方法は?

チェックアウト Lists.partition(java.util.List, int) から グーグル グアバ :

あるリストの連続したサブリストを、それぞれ同じ大きさで返します(最終的なリストは小さくなる可能性があります)。例えば、以下のものを含むリストを分割すると [a, b, c, d, e] で、パーティションサイズが3であれば、次のようになります。 [[a, b, c] , [d, e]] -- 3要素と2要素の2つの内側リストを含む外側リストで,すべて元の順序で並んでいます.