package com.jackrain.nea.retail.common; import org.apache.dubbo.common.utils.CollectionUtils; import java.util.ArrayList; import java.util.List; /** * Created by LX on 2018/9/1. */ public class ListUtils { /** * 将一个list均分成n个list,主要通过偏移量来实现的 * * @param source * @return */ public static <T> List<List<T>> averageAssign(List<T> source, int n) { if(CollectionUtils.isEmpty(source)) return null; List<List<T>> result = new ArrayList<List<T>>(); int remaider = source.size() % n; //(先计算出余数) int number = source.size() / n; //然后是商 int offset = 0;//偏移量 for (int i = 0; i < n; i++) { List<T> value = null; if (remaider > 0) { value = source.subList(i * number + offset, (i + 1) * number + offset + 1); remaider--; offset++; } else { value = source.subList(i * number + offset, (i + 1) * number + offset); } result.add(value); } return result; } public static List<List<Integer>> splitList(List<Integer> list, int len){ if (list == null || list.size() == 0 || len < 1) { return null; } List<List<Integer>> result = new ArrayList<>(); int size = list.size(); int count = (size + len - 1) / len; for (int i = 0; i < count; i++) { List<Integer> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1))); result.add(subList); } return result; } public static String listToString(List<Integer> list) { if (list == null) { return null; } StringBuilder result = new StringBuilder(); boolean flag = false; for (Integer i : list) { if (flag) { result.append(","); } else { flag = true; } result.append(i); } return result.toString(); } public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); Integer i =10; List<List<Integer>> storeInfos = ListUtils.averageAssign(list, i); System.out.println(CollectionUtils.isEmpty(storeInfos.get(1))); } }
多线程平分任务量
最新推荐文章于 2022-10-13 09:59:11 发布