java实现分组算法,根据每组多少人来进行分组
2017-08-15 21:48
956 查看
分组算法
需求:根据每组多少人来进行分组,人数少于每组人数时,只分一组;
分组时,最后一个组的人数<=每组人数的一半时,取消该组,将该组人数分配到其他组。
lg:26人的集合,每组4人,分6组,余2个人,这个2个人分到其他组里去;
27人的集合,每组4人,分7组,最后1组3人
代码实现如下:
需求:根据每组多少人来进行分组,人数少于每组人数时,只分一组;
分组时,最后一个组的人数<=每组人数的一半时,取消该组,将该组人数分配到其他组。
lg:26人的集合,每组4人,分6组,余2个人,这个2个人分到其他组里去;
27人的集合,每组4人,分7组,最后1组3人
代码实现如下:
public class test { public static List<List<String>> test(List<String> list, Integer n) {//n代表每组多少人 // 求余数 int yushu = list.size() % n; // 求分组数 int count0 = list.size() / n; boolean flag = false; if(yushu<=n/2){ flag=true; } List<List<String>> data = new ArrayList<List<String>>(); // 获取多余list List<String> sub = new ArrayList<String>(list.subList(list.size() - yushu , list.size())); // 遍历list到余数前 for (int i = 0; i < count0+1; i++) { List<String> ls = null; if(flag){ if(i==count0){ break; } ls = new ArrayList<String>(list.subList(i * n, i * n + n)); // 将余出的数据加入分组 if (i < sub.size()) { ls.add(sub.get(i)); } }else{ int endex = i * n + n; if(endex>=list.size()){ endex=list.size(); } ls = new ArrayList<String>(list.subList(i * n, endex)); } data.add(ls); } return data; } public static void main(String[] args) { List<String> list = new ArrayList<String>(); for (int i = 0; i < 5; i++) { list.add(i + ""); } List<List<String>> test = test(list, 5); System.out.println("result:" + test); } }
相关文章推荐
- Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
- 一个迭代小算法,根据指定的个数对下标进行分组
- Java中Map根据键值(key)或者值(value)进行排序实现
- 利用朴素贝叶斯算法进行分类-Java代码实现
- 分组Top N问题(一) - java实现Top n算法基础
- 【LeetCode-面试算法经典-Java实现】【025-Reverse Nodes in k-Group(单链表中k个结点一组进行反转)】
- java使用mongo数据库,怎么根据两列进行分组统计并分页
- Java中Map根据键值(key)或者值(value)进行排序实现
- Java中Map根据键值(key)或者值(value)进行排序实现
- Java根据概率、剩余奖品数量动态抽奖算法实现,概率总和可以不为100%
- 【java】将List中的实体按照某个字段进行分组的算法
- Java实现根据List中对象的相应属性进行排序
- Java中Map根据键值(key)或者值(value)进行排序实现
- Java进阶(五十)根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
- SVM分类算法,libsvm的Java语言实现-根据语料和测试语料判断准确率的
- Java中Map根据键值(key)或者值(value)进行排序实现
- C# 使用Dictionary、linq实现根据集合里面的字符串进行分组
- Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- Java中Map根据键值(key)或者值(value)进行排序实现