int partitionSize = 1000; List> partitions = new LinkedList>(); for (int i = 0; i < originalList.size(); i += partitionSize) { partitions.add(originalList.subList(i, Math.min(i + partitionSize, originalList.size()))); }
通用function:
public static ArrayList chunks(ArrayList bigList,int n){ ArrayList chunks = new ArrayList(); for (int i = 0; i < bigList.size(); i += n) { T[] chunk = (T[])bigList.subList(i, Math.min(bigList.size(), i + n)).toArray(); chunks.add(chunk); } return chunks; }
享受吧〜:)
Java 8(不是它有优势):
List list = new ArrayList<>(); Collections.addAll(list, "a","b","c","b","c","a","c","a","b");
分组大小:
final int G = 3; final int NG = (list.size() + G - 1) / G;
旧式:
List> result = new ArrayList(NG); IntStream.range(0, list.size()) .forEach(i -> { if (i % G == 0) { result.add(i/G, new ArrayList<>()); } result.get(i/G).add(list.get(i)); });
新风格:
List> result = IntStream.range(0, NG) .mapToObj(i -> list.subList(3 * i, Math.min(3 * i + 3, list.size()))) .collect(Collectors.toList());