UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Java】リストを指定した件数ずつに分割する

Javaで数万件の要素をもつリストを1000件ずつのリストに分割したい

いわゆるパーティションというやつだが、Javaの標準ライブラリにはないみたい

こちらを参考にしたところ、いくつかやり方があるみたいだが外部ライブラリは極力いれたくない www.baeldung.com

ということで自作した

  public static <T> List<List<T>> partition(List<T> list, int size) {
    if (null == list || list.isEmpty() || size <= 0) {
      return Collections.emptyList();
    }
    int block = (list.size() + (size - 1)) / size;
    List<List<T>> partitions = new ArrayList<>(block);
    for (int i = 0; i < block; i++) {
      int start = i * size;
      int end = Math.min(start + size, list.size());
      partitions.add(list.subList(start, end));
    }
    return partitions;
  }

これで分割することができた

他参考

https://fumidzuki.com/knowledge/2806/