JavaでRubyのeach_sliceがしたい
each_sliceというのは配列を指定した要素数の配列に分ける処理です。リストの中身をn件ごとに処理するときに便利です。 Javaには同様の処理が(たぶん)標準APIには無いので、こんな感じで行けそうです。
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; public class Test { public static void main(String[] args) { // [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] System.out.println(slice(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 3)); } private static <T> List<List<T>> slice(List<T> list, int n) { final int resultSize = (int) Math.ceil((double) list.size() / n); return IntStream.range(0, resultSize) .mapToObj(i -> list.subList(n * i, Math.min(list.size(), n * (i + 1)))) .collect(Collectors.toList()); } }
参考: Is there a way to do the Ruby each_slice in Java 8? - Stack Overflow