java如何将一个arraylist等量划分为5个新的arraylist集合?

java如何将一个arraylist等量划分为5个新的arraylist集合?

我擦,看到问题才写通用方法就有人先回答了。。。给出我的答案。
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,表示各个集合的个数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-22
ArrayList本身提供了一个subList方法,这个方法可以实现分割,至于等量 这不太好说,而且subList获得的新List也会影响原List追问

获得的新list是不是只是引用变量?处理完后不需要释放?

追答说不上引用吧 都指向相同的内存片段 , java中除了数据库处理、文件流处理之类 其他大部分资源是不需要手动释放的,

本回答被提问者采纳
第2个回答  2014-12-22
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);
}
}

}
循环的次数自己看 不想写了 但是都是手写的本回答被网友采纳