拆分List

@Slf4j
public class SplitListUtil {

    public static  List> splitList(List sourceList){
        List> list = new ArrayList<>();
        if (CollectionUtils.isEmpty(sourceList)){
            return list;
        }
        if (sourceList.size() < 1000){
            list.add(sourceList);
            return list;
        }
        Double ceil = Math.ceil(Double.valueOf(sourceList.size()) / 1000);
        int listCount = ceil.intValue();
        Double floorSize = Math.ceil(Double.valueOf(sourceList.size()) / listCount);
        int subListSize = floorSize.intValue();
        boolean last = true;
        int maxSize = 0;
        for (int i = 0; i < listCount; i++) {
            List listSub = new ArrayList<>();
            int i1 = i * (subListSize);
            if (last){
                maxSize = (i + 1) * (subListSize);
            }

            for (int j = i1; j < maxSize; j++) {
                listSub.add(sourceList.get(i1 ++));
            }
            System.out.println("listSub====>" + listSub.size());
            list.add(listSub);
            if (sourceList.size() - maxSize <= floorSize){
                maxSize = sourceList.size();
                last = false;
            }
        }

        return list;

    }

    public static void main(String[] args) {
        List arrayList = new ArrayList<>();
        for (int i = 0; i < 50001; i++) {
            arrayList.add(i);
        }
        List> lists = SplitListUtil.splitList(arrayList);
        System.out.println(lists.size());
        System.out.println(lists);
    }
}

你可能感兴趣的:(拆分List)