转载请注明出处:http://blog.csdn.net/u012250875/article/details/78191555
有时候在业务中需要对list或者set等集合类中的元素进行分组操作。分组操作有如下两类分组方式:
按逻辑分组
比如,List中所有苹果对象按照苹果的颜色分,具体实现参见【java】Comparator的用法一文按数目分组
比如,将有二十个元素的list每5个元素分一组
/**
* @author puyf
* @Description:按个数分组
* @param list
* @param unitCount
* 代表每组的个数
* @return 返回所有的组
*/
public static <T> List<List<T>> divider(Collection<T> datas, int unitCount) {
List<List<T>> returnDatas = new ArrayList<List<T>>();
List<T> unit = null;
int counter = 0;
for (T t : datas) {
if (counter % unitCount == 0) {
unit = new ArrayList<T>();
returnDatas.add(unit);
}
unit.add(t);
counter++;
}
return returnDatas;
}
下面来测试下方法:
public static void main(String[] args) {
List<Integer> testData = new ArrayList<>(Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8}));
System.out.println("每组1个元素,结果是8个元素刚好被分成了8组:");
System.out.println(divider(testData,1));
System.out.println("每组2个元素,结果是8个元素刚好被分成了4组:");
System.out.println(divider(testData,2));
System.out.println("每组3个元素,结果是8个元素被分成了3组,最后一组只有两个元素:");
System.out.println(divider(testData,3));
}
打印结果:
每组1个元素,结果是8个元素刚好被分成了8组:
[[1], [2], [3], [4], [5], [6], [7], [8]]
每组2个元素,结果是8个元素刚好被分成了4组:
[[1, 2], [3, 4], [5, 6], [7, 8]]
每组3个元素,结果是8个元素被分成了3组,最后一组只有两个元素:
[[1, 2, 3], [4, 5, 6], [7, 8]]
更多:集合常用操作(点击查看)