java List分组

java List分组,第1张

java List分组

业务:由于数据量过大 将编码分组进行带入查询 每十个一组 然后塞入到大结果集返回。

工具类:

package net.base.util;

import java.util.ArrayList;
import java.util.List;


public class GroupingUtil {

    
    public  List> grouping(List list, Integer n) {

        // 求余数
        int yushu = list.size() % n;
        // 求分组数
        int count0 = list.size() / n;

        boolean flag = false;

        if(yushu>=n/1){
            flag=true;
        }

        List> data = new ArrayList<>();
        // 获取多余list
        List sub = new ArrayList<>(list.subList(list.size() - yushu , list.size()));
        // 遍历list到余数前
        for (int i = 0; i < count0+1; i++) {
            List ls ;
            if(flag){
                if(i==count0){
                    break;
                }
                ls = new ArrayList<>(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<>(list.subList(i * n, endex));
            }
            if(ls.size()!=0){
                data.add(ls);
            }
        }
        return data;
    }
}

实现:

 //由于数据量过大 将编码分组进行带入查询  每十个一组  然后塞入到大结果集返回
        GroupingUtil groupingUtil = new GroupingUtil();
         List> group =  groupingUtil.grouping(coalMine,10);
         for{...}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5687458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存