package cn.hanghui.outapi.platform.common.utils;

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

/**
 * @author shisl
 * @package cn.hanghui.outapi.platform.common.utils
 * @class ListUtils
 * @date 2023/9/29 下午4:29
 * @description
 */
public class ListUtils {

    /**
     * @param target          将要被拆分的list
     * @param targetSplitSize 把将要拆分的list拆分成目标list的个数
     * @return
     */
    public static <T> List<List<T>> averageAssign(List<T> target, int targetSplitSize) {
        List<List<T>> resultList = new ArrayList<>();
        //先求每组平均分多少个,如果不够分补足，最后一个少分
        int avgSize = target.size() / targetSplitSize;
        //求出最后一组的个数
        int lastArraySize = target.size() - avgSize * (targetSplitSize - 1);
        int k = 0;  //取出list中元素的计数器
        for (int i = 0; i < targetSplitSize; i++) {
            List<T> list = new ArrayList<T>();
            //如果不是最后一组则按照平均大小拆分目标list
            if (i != (targetSplitSize - 1)) {
                for (int j = 0; j < avgSize; j++) {
                    list.add(target.get(k));
                    k++;
                }
            } else {
                for (int j = 0; j < lastArraySize; j++) {
                    list.add(target.get(k));
                    k++;
                }
            }
            resultList.add(list);
        }
        return resultList;
    }
}
