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的值较小时,则所用时间差距不明显

ArrayList中ensureCapacity的使用与优化

对于ArrayLis中有一个方法ensureCapacity(int n),这个方法可以对ArrayList低层的数组进行扩容,显示的调用这个函数,如果参数大于低层数组长度的1.5倍,那么这个数组的容...
  • u012700373
  • u012700373
  • 2014年04月01日 19:48
  • 2625

ArraylList的扩容机制和使用ensureCapacity()方法提高性能

ArrayList的扩容规则是变成原来最大容量的1.5倍+1 具体为什么,现在看一下源码: public boolean add(E e) { ensureCapacityInt...
  • glory1234work2115
  • glory1234work2115
  • 2016年03月11日 20:51
  • 3274

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

http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/util/ArrayList.html     http://dingha...
  • qazwsx185313301
  • qazwsx185313301
  • 2014年03月28日 18:14
  • 603

初始化ArrayList的两种方法

方式一:   ArrayList list = new ArrayList();   String str01 = String("str01");   String str02 = Strin...
  • mercenarylin
  • mercenarylin
  • 2014年03月20日 15:46
  • 77626

Java 一行代码初始化ArrayList

我愿意创建列表的选项,以测试的东西。 我正在做: ArrayList places = new ArrayList(); places.add("Buenos Aires"); places....
  • a258831020
  • a258831020
  • 2015年07月17日 12:57
  • 2024

ArrayList自动扩容解析

探索ArrayList自动改变size真相 ArrayList的列表对象实质上是存储在一个引用型数组里的,有人认为该数组有“自动增长机制”可以自动改变size大小。正式地说,该数组是无法改变 ...
  • huangfan322
  • huangfan322
  • 2016年09月27日 23:26
  • 7956

(如何)从数组创建ArrayList

我有一个数组,初始化如下:Element[] array = {new Element(1), new Element(2), new Element(3)}; 我希望将这个数组转化成一个ArrayL...
  • xuxian361
  • xuxian361
  • 2015年10月15日 22:11
  • 1844

ArrayList的初始值 和 扩充问题

原文链接;   http://blog.csdn.net/java2000_net/article/details/5215882 论坛的一个问题: 有这样一段很简单的代码: ...
  • u010003835
  • u010003835
  • 2016年06月02日 01:49
  • 2209

ArrayList的初始化和扩容解读

ArrayList的初始化和扩容解读 ======================= 1.JDK 1.6  (1)默认的构造函数 初试化时的长度为10: public ArrayList()...
  • liuzongxi
  • liuzongxi
  • 2015年03月30日 20:23
  • 1340

java怎么用一行代码初始化ArrayList

java怎么用一行代码初始化ArrayList
  • xiacsd
  • xiacsd
  • 2014年11月07日 17:40
  • 6268
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArrayList——ensureCapacity()提高ArrayList的初始化速度
举报原因:
原因补充:

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