list 分割成多个list

  • Post author:
  • Post category:其他


package mall.block.client.common.util;


import mall.block.client.entity.entity.MallProducts;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 把集合拆分成多个集合
 */
public class BatchListUtil {

    /**
     * 把list分成多个批次
     * @param list 集合
     * @param batchSize 批次大小
     * @return Map<Integer,List<E>>
     */
    public static List<List<MallProducts>> groupList(List<MallProducts> list,Integer count) {
        List<List<MallProducts>> listGroup = new ArrayList<List<MallProducts>>();
        int listSize = list.size();
        //子集合的长度
        int toIndex = count;
        for (int i = 0; i < list.size(); i += count) {
            if (i + count > listSize) {
                toIndex = listSize - i;
            }
            List<MallProducts> newList = list.subList(i, i + toIndex);
            listGroup.add(newList);
        }
        return listGroup;
    }

    public static <T> List <List<T>> averageAssign(List<T>source, int n){
        List <List<T>> result=new ArrayList<List<T>>();
        int remainder=source.size()%n;  //先计算出余数
        int number=source.size()/n;  //然后是商
        int offset=0;//偏移量(用以标识加的余数)
        for(int i=0;i<n;i++){
            List<T> value;
            if(remainder>0){
                value=source.subList(i*number+offset, (i+1)*number+offset+1);
                remainder--;
                offset++;
            }else{
                value=source.subList(i*number+offset, (i+1)*number+offset);
            }
            result.add(value);
        }
        return result;
    }
}



版权声明:本文为qq_32521313原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。