我擦,看到问题才写通用方法就有人先回答了。。。给出我的答案。
public static void main(String[] args) {
List<Integer> l = new ArrayList<Integer>();
for (int i = 0; i < 586; i++) {
l.add(i);
}
Map<Integer, List<Integer>> map = DIVIDE_LIST(l, 5);
for (int i = 0; i < 5; i++) {
System.out.println(map.get(i).size());
}
}
/**
*
* @param <T>
* @param list
* 拆分的集合
* @param count
* 拆分数
*/
public static <T> Map<Integer, List<T>> DIVIDE_LIST(final List<T> list,
final int count) {
final int size = list.size();
final int[] arr = new int[count];
final int avg = size / count;// 平均数
final int addIndex = size - avg * count;// 需要增加1个数量的最大下标
for (int i = 0; i < count; ++i) {
arr[i] = i < addIndex ? avg + 1 : avg;
}
final Map<Integer, List<T>> map = new HashMap<Integer, List<T>>();
int index = 0;
for (int i = 0; i < arr.length; i++) {
// 截取集合
map.put(i, list.subList(index, index += arr[i]));
}
return map;
}
给出Integer的集合,元素个数586,在main方法里有,
输出结果是 118 117 117 117 117,表示各个集合的个数。
温馨提示:答案为网友推荐,仅供参考