我擦,看到问题才写通用方法就有人先回答了。。。给出我的答案。
public static void main(String[] args) {
List
for (int i = 0; i < 586; i++) {
l.add(i);
}
Map
for (int i = 0; i < 5; i++) {
System.out.println(map.get(i).size());
}
}
/**
*
* @param
* @param list
* 拆分的集合
* @param count
* 拆分数
*/
public static
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
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,表示各个集合的个数。
ArrayList本身提供了一个subList方法,这个方法可以实现分割,至于等量 这不太好说,而且subList获得的新List也会影响原List
import java.util.ArrayList;
public class MethodDemo3
{
private ArrayList arr1;
private ArrayList arr2;
private ArrayList arr3;
private ArrayList arr4;
private ArrayList arr5;
private ArrayList arr;
public MethodDemo3(){
arr1 = new ArrayList();
arr2 = new ArrayList();
arr3 = new ArrayList();
arr4 = new ArrayList();
arr5 = new ArrayList();
arr = new ArrayList();
}
public static void main(String args[])
{
MethodDemo3 demo = new MethodDemo3();
for(int i = 0; i < 5; i++){
demo.arr.add(i);
}
demo.split(demo);
}
public void split(MethodDemo3 demo){
int num = demo.arr.size()/5;
for(int i = 0; i < num; i++){
demo.arr1.add(i);
}
for(int i = num; i < 2 * num; i++){
demo.arr1.add(i);
}
}
}
循环的次数自己看 不想写了 但是都是手写的