您当前的位置: 首页 >  学无止境 >  文章详情

java记录,将一个List均分成n个list,主要通过偏移量来实现的

时间: 2020-09-17 【学无止境】 阅读量:共1355人围观

简介 在开发中,我们需要将一个List数组按照每组几个,平均分成若干份,如果size数量不够平均分,前面满足的会分满,剩下的分到最后一个组,例如:6个,平均每组2个。就是2,2,2。如果每组4个,就是4,2。

代码如下

/** * 将一个List均分成n个list,主要通过偏移量来实现的 * * @param source 源集合 * @param limit 最大值 * @return */ public static <T> List<List<T>> averageAssign(List<T> source, int limit) { if (null == source || source.isEmpty()) { return Collections.emptyList(); } List<List<T>> result = new ArrayList<>(); int listCount = (source.size() - 1) / limit + 1; int remaider = source.size() % listCount; // (先计算出余数) int number = source.size() / listCount; // 然后是商 int offset = 0;// 偏移量 for (int i = 0; i < listCount; i++) { List<T> value; if (remaider > 0) { value = source.subList(i * number + offset, (i + 1) * number + offset + 1); remaider--; offset++; } else { value = source.subList(i * number + offset, (i + 1) * number + offset); } result.add(value); } return result; }
文章评论
总共 0 条评论
这篇文章还没有收到评论,赶紧来抢沙发吧~
Copyright (C) 2023-现在 若熙站点 保留所有权利 蜀ICP备 17034318号-4  公安备案号 50010302505321