Given a java.util.List with n elements and a desired page size m, I want to transform it to a map containing n/m+n%m elements. Each map element shall contain m elements.
Here's an example with integers:
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// What is the equivalent Java 8 code to create the map below from my list?
Map> map = new HashMap<>();
map.put(0, Arrays.asList(1,2,3));
map.put(1, Arrays.asList(4,5,6));
map.put(2, Arrays.asList(7,8,9));
map.put(3, Arrays.asList(10));
Is this possible, using Java 8?
解决方案
You could use IntStream.iterate combined with the toMap collector and the subList method on List (thanks to Duncan for the simplifications).
import static java.util.stream.Collectors.toMap;
import static java.lang.Math.min;
...