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

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;
}

相关推荐

    java实现把一个List集合拆分成多个的操作

    本篇文章将详细讲解如何使用Java实现将一个List集合拆分成多个固定长度的小集合。 首先,我们来看一个简单的例子,这个例子中定义了一个名为`groupList`的方法,它接受一个List类型的参数,并将其拆分成多个子集合...

    Map拆分List拆分

    Map拆分是指将一个大Map分成多个小Map,以便在多台机器上并行处理。这种拆分方法可以显著提高计算效率,因为它允许数据在分布式系统中分散,每台机器只需处理一部分数据。例如,在Hadoop MapReduce中,InputFormat类...

    java常见八种排序算法

    它将大数组分成两个小数组,分别排序后再合并成一个有序数组。归并排序的时间复杂度始终保持为O(n log n),但需要O(n)的额外空间。 7. **堆排序(Heap Sort)** 堆排序利用了二叉堆这一数据结构。它首先将待排序的数...

    list 假分页的demo

    分页的基本思想是将大量的数据分成若干个小部分,每个部分称为一页。用户可以逐页浏览,而不是一次性看到所有数据,提高了用户体验。在实际应用中,分页通常涉及两个关键参数:当前页码和每页显示的条目数。 2. **...

    Java应用程序-习题-第8章.doc

    Java List 集合与 Java 数组不同,Java List 集合的长度是可变的,可以动态地添加或删除元素。 5. List 主要特征是其元素以线型方式存储,集合中可以存放重复的对象。正确 List 集合的主要特征是其元素以线型方式...

    Java实现获取指定个数的不同随机数

    3. 把一个整数拆分成不等的几份 在这个例子中,我们使用Random类的nextInt()方法来生成一个随机的整数,然后将其添加到List集合中。为了避免重复的随机数,我们使用contains()方法来检查List集合中是否已经存在该...

    java 排序 完成收录

    在IT领域,排序是计算机科学中的一个核心概念,特别是在编程语言如Java中。排序是指将一组数据按照特定的顺序进行排列的过程。这个过程对于数据分析、数据库管理、算法优化等应用场景至关重要。以下是对“java 排序 ...

    Java源码分析:集合-容器.pdf

    ConcurrentHashMap通过使用分段锁(Segmentation)的方式来提高并发访问的能力,它将数据分成了不同的段,每个段独立进行加锁,从而允许并发操作。在JDK1.8及之后的版本中,ConcurrentHashMap进一步改进了死锁问题,...

    leetcode简单+中等题目参考答案java版

    然后根据这个位置的比特值的不同将原数组分成两组,分别对这两组进行异或运算即可得到两个不同的数字。这种方式不仅保持了线性时间复杂度,还实现了常数空间复杂度的要求。 通过以上三个题目的解析,我们可以看到位...

    Java中的排序大全

    1. `Arrays.sort()`: 这是Java标准库提供的一个强大工具,适用于基本类型的数组(如int[]、double[]等)和Object类型的数组。对于基本类型,`Arrays.sort()`使用快速排序,而对Object数组则采用归并排序。可以对部分...

    java集合(自学整理)

    - **适配器模式** (`Adapter Pattern`): `java.util.Arrays#asList()` 方法可以把数组类型转换为 `List` 类型。需要注意的是,该方法接受泛型的变长参数,因此不能直接使用基本类型数组作为参数,只能使用相应的包装...

    JAVA2核心技术第7版卷1(中文PDF)

    4. **数组与集合框架**:讨论一维和多维数组,以及Java集合框架,如List、Set、Map接口和ArrayList、LinkedList、HashSet、HashMap等实现类的使用。 5. **字符串处理**:讲解String类的特点,以及StringBuilder和...

    Java实现桶排序算法(源代码)

    其核心思想是通过将数据分成若干个“桶”,然后分别对这些桶内的数据进行排序,最后将这些排序好的桶重新组合起来得到最终的排序结果。桶排序的主要步骤包括: 1. **确定桶的数量**:首先,根据待排序数据的范围...

    java-leetcode题解之第148题排序链表.zip

    在Java中,我们可以创建一个`ListNode`类表示链表节点,然后编写一个`sortList(ListNode head)`方法来实现归并排序。`ListNode`类应包含数据域和指向下一个节点的指针。`sortList`方法首先检查链表是否为空或只有一...

    java集合类原理面试题

    `ConcurrentHashMap`在并发环境下表现优秀,其内部将数据分成多个段,每个段有自己的锁,提高了并发性能。 `ArrayList`的数据结构是一个可变大小的数组,支持快速随机访问,但在中间插入和删除元素时,需要移动大量...

    java私塾学习笔记整理

    2. **BorderLayout**:将容器分成五个区域。 3. **GridLayout**:将容器划分为固定数量的格子。 4. **CardLayout**:只显示一个组件,通过按钮切换显示不同的组件。 5. **GridBagLayout**:提供最灵活的布局管理,...

    深入理解Java函数式编程和Streams API

    - **源**:可以是一个集合、数组或其他任何可以提供数据流的对象。 - **中间操作**:这些操作不会执行任何处理,而是返回一个新的流供后续进一步处理。 - **终端操作**:这些操作会导致流的管道执行,并且会产生...

    软件与开发环境(Java上篇)

    由于内容较多,因此分成了多个部分上传,这里我们将专注于Java1~7章的内容。 首先,Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)于1995年推出。它的设计目标是具有跨平台性、安全性以及...

Global site tag (gtag.js) - Google Analytics