按固定条数拆分
org.apache.commons.collections4.ListUtils#partition
com.google.common.collect.Lists#partition
@Test
public void test04() {
Long[] idArray = new Long[0];
for (long i = 1; i <= 400; i++) {
idArray = ArrayUtils.add(idArray, i);
}
List<Long> allIdList = Arrays.asList(idArray);
// 按照固定条数拆分
List<List<Long>> partitionIdList1 = ListUtils.partition(allIdList, 100);
System.out.println(MessageFormat.format("partitionIdList1是{0}", JSONObject.toJSONString(partitionIdList1)));
List<List<Long>> partitionIdList2 = Lists.partition(allIdList, 100);
System.out.println(MessageFormat.format("partitionIdList2是{0}", JSONObject.toJSONString(partitionIdList2)));
}
平均分成N份
@Test
public void test05() {
Long[] idArray = new Long[0];
for (long i = 1; i <= 400; i++) {
idArray = ArrayUtils.add(idArray, i);
}
List<Long> allIdList = Arrays.asList(idArray);
// 按每10个一组分割
Integer maxSend = 10;
// 计算切分次数
Integer limit = (allIdList.size() + maxSend - 1) / maxSend;
List<List<Long>> partitionIdList3 = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> allIdList.stream().skip(a * maxSend).limit(maxSend).parallel().collect(Collectors.toList())).collect(Collectors.toList());
System.out.println(MessageFormat.format("partitionIdList3是{0}", JSONObject.toJSONString(partitionIdList3)));
}