ArrayList——ensureCapacity()提高ArrayList的初始化速度

转载 2016年08月31日 09:51:56

转自http://java-admin.iteye.com/blog/1061499

在使用Arraylist时,经常要对它进行初始化工作,在使用add()方法增加新的元素时,如果要增加的数据量很大,应该使用ensureCapacity()方法,该方法的作用是预先设置Arraylist的大小,这样可以大大提高初始化速度。

public class EnsureCapacityTest {

	public static void main(String[] args){   
        final int N = 1000000;   
        Object obj = new Object();   
           
        //没用调用ensureCapacity()方法初始化ArrayList对象   
        ArrayList list = new ArrayList();   
        long startTime = System.currentTimeMillis();   
        for(int i=0;i<=N;i++){   
            list.add(obj);   
        }   
        long endTime = System.currentTimeMillis();   
        System.out.println("没有调用ensureCapacity()方法所用时间:" + (endTime - startTime) + "ms");   
           
        //调用ensureCapacity()方法初始化ArrayList对象   
        list = new ArrayList();   
        startTime = System.currentTimeMillis();   
        list.ensureCapacity(N);//预先设置list的大小   
        for(int i=0;i<=N;i++){   
            list.add(obj);   
        }   
        endTime = System.currentTimeMillis();   
        System.out.println("调用ensureCapacity()方法所用时间:" + (endTime - startTime) + "ms");   
    }   


}


测试结果

没有调用ensureCapacity()方法所用时间:22ms
调用ensureCapacity()方法所用时间:9ms

结果显而易见,在N的值很大的时候,使用ensureCapacity()方法可大大提高效率;而当N的值较小时,则所用时间差距不明显

ensureCapacity()方法提高ArrayList的初始化速度

我们在使用Arraylist时,经常要对它进行初始化工作,在使用add()方法增加新的元素时,如果要增加的数据量很大,应该使用ensureCapacity()方法,该方法的作用是预先设置Arrayli...

Java数据结构笔记2——数组线性表类(ArrayList)

图1 . ArrayList在Java集合框架中的位置 数组线性表类(ArrayList)和链表类(LinkedList)是实现List的两个链表类,ArrayList是基于数组的,也就是说...

Java 集合框架源码分析(一)——ArrayList

简介ArrayList中是平常比较常用的一个集合类,经常帮助我们封装一些实体Bean的List集合。典型使用场景如下: List bookList=new ArrayList(); bookLi...

JAVA之旅(十九)——ListIterator列表迭代器,List的三个子类对象,Vector的枚举,LinkedList,ArrayList和LinkedList的小练习

JAVA之旅(十九)——ListIterator列表迭代器,List的三个子类对象,Vector的枚举,LinkedList,ArrayList和LinkedList的小练习 关于数据结构,所讲的...

蓝鸥Unity开发基础——ArrayList

蓝鸥Unity开发基础——ArrayList

C#入门7.9——ArrayList类中元素的添加

前面讲到数组一旦给定大小就是固定的了,不能再改。还有一种数组是可以扩充的,即ArrayList类,被称为动态数组或者集合。 使用步骤: 1.引入命名空间System.Collections; 2...

Java——ArrayList,Vector,LinkedList的区别

List概览ArrayList vs LinkedList vs VectorArrayList例子LinkedList例子VectorArrayList和LinkedList性能对比 ...

JDK源码阅读——ArrayList(2)

JDK源码阅读
  • xmkid
  • xmkid
  • 2016年04月11日 16:39
  • 158

java源码解读——ArrayList(一)

源码为Java 1.7的源码 ArrayList是一个实现可变长数组,继承AbstractList类,实现所有的List接口,还实现了RandomAccess、Cloneable、Serializa...

java集合——数组、List和ArrayList、LinkedList的区别

数组: 优点:数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很 简单。 缺点:在数组的两个数据间插入数据...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArrayList——ensureCapacity()提高ArrayList的初始化速度
举报原因:
原因补充:

(最多只允许输入30个字)