`
dou_shini8820
  • 浏览: 77817 次
社区版块
存档分类
最新评论

Java把List分成一定容量的n个数组

阅读更多

数组的长度length是long型的,理论上长度是没有限制的,但是一次存储的数据过多时,内存装不下,所以我可以拆分成多个数组

 

public static List<String[]> listToArray(List<String> list,int bccSize){
List<String []> list2 = new ArrayList<String []>();
String arr[]=null;
for(int j=1,len=list.size()+1;j<len;j++){
if(j==1){
if(len>bccSize){ //初始化数组大小
arr=new String[bccSize];
}else{
arr=new String[len-1];
}
}
arr[j-(bccSize*list2.size())-1]=list.get(j-1);  //给数组赋值
if(j%bccSize==0){
list2.add(arr);  //数组填值满后放到集合中
if(len-j-1>bccSize){
arr=new String[bccSize];
//不允许数组有空值创建最后一个数组的大小(如果都要一定大小可以去掉)
}else{ 
arr=new String[len-(bccSize*list2.size())-1];
}
}else if(j==len-1){
list2.add(arr);//最后一个数组可能没有规定大小
}
}
 
return list2;
}

 

 

还有一种更简单的方法,利用List接口的subList(int start,int end)方法来实现

0
4
分享到:
评论
2 楼 dou_shini8820 2013-05-06  
KA兔 写道
你这样是不是太麻烦了点:

public static List<String[]> listToArray(List<String> list,int bccSize){
List<String[]> result = new ArrayList<String[]>();
String arr[] = null;
for (int i = 0; i < list.size(); i++) {
if(i % bccSize == 0){
arr = new String[list.size() - i < bccSize ? list.size() - i : bccSize];
result.add(arr);
}
arr[i % bccSize] = list.get(i);
}
return result;
}


是啊,后来我也觉得有点儿麻烦,看了看Api,发现还有更好的方法subList(int start,int end),这样把一个大List拆分成几个小List,然后直接toArray()就Ok了
1 楼 KA兔 2013-05-06  
你这样是不是太麻烦了点:

public static List<String[]> listToArray(List<String> list,int bccSize){
List<String[]> result = new ArrayList<String[]>();
String arr[] = null;
for (int i = 0; i < list.size(); i++) {
if(i % bccSize == 0){
arr = new String[list.size() - i < bccSize ? list.size() - i : bccSize];
result.add(arr);
}
arr[i % bccSize] = list.get(i);
}
return result;
}

相关推荐

Global site tag (gtag.js) - Google Analytics