扩容原则:

若参数值大于底层数组长度的1.5倍,则数组的长度就扩容为这个参数值;若小于底层数组长度的1.5倍,则数组长度就扩容为底层数组长度的1.5倍。

ensureCapacity提高效率

  final int N = 10000000;
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()方法所用时间:531ms
调用ensureCapacity()方法所用时间:388ms

如果数据量比较小,就没啥差异了

ensureCapacity增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。的更多相关文章

  1. 【转】精简深拷贝ArrayList实例

    原文网址:http://gghhgame51333.blog.51cto.com/138362/289383 精简深拷贝ArrayList实例(包括递归和序列化方法) 2007-07-12 16:50 ...

  2. Java ArrayList调用构造方法传入"容量size"不生效,如何初始化List容量size

    创建一个ArrayList对象,传入整型参数 @Test public void arrayListConstructor(){ ArrayList<Object> objects = n ...

  3. 在原有mysql机器上增加一台实例

    采用的是yum install mysql-community-server yum方式安装mysql(社区版) 文章基础上新加一个mysql实例. 这个完全可以直接实战上应用,只要规划好即可 服务器 ...

  4. Java集合类库list(1)ArrayList实例

    public class ArrayListTest { public static void main(String[] args) { //创建空的ArrayList列表 ArrayList al ...

  5. 如何使用 AWS Auto Scaling 按需动态增加和减少实例

    目录 一.背景需求 二.配置步骤 2.1.创建 AMI 2.2.创建负载均衡目标组 2.3.创建 Classic Load Balancer 2.4.创建启动配置 2.5.创建 Auto Scalin ...

  6. 增加tomcat多实例

    第一步:解压 第二步:修改端口 /data/service/tomcat1/conf <Server port="8006" shutdown="SHUTDOWN& ...

  7. 无法反序列化的java.util.ArrayList实例出来VALUE_STRING的(Can not deserialize instance of java.util.ArrayList out of VALUE_STRING)

    解决方法: 设置DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY.问题解决.

  8. 一个问题提交的实例(js原生动画,原生ajax,js引用加参数)

    document.writeln("<div id=\"tanchuangwai\" class=\"tanchuangwai\" style= ...

  9. 内功心法 -- java.util.ArrayList<E> (1)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

随机推荐

  1. 自己实现一个jQuery插件

    <script src="https://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script> ...

  2. Nginx failing to load CSS and JS files (MIME type error)

    Nginx failing to load CSS and JS files (MIME type error) Nginx加载静态文件失败的解决方法(MIME type错误) 上线新的页面,需要在n ...

  3. 使用dotenv 管理nodejs 应用的环境变量&&docker-compose 运行

      说明dotenv 是一个很方便的符合12 factor 的环境变量管理工具,使用很方便,实际上里面的代码也不是很多 测试使用docker 进行环境部署,为了方便分发使用pkg 进行打包,使用alp ...

  4. oracle中创建数据库用户,并授权

    --查看表空间文件路径select * from dba_data_files where tablespace_name=$TABLESPACE CREATE TABLESPACE usr_aa D ...

  5. js for循环中定义clike事件由于闭包导致的循环变量获取不到的问题

    在网上找的 记下来以备不时之需 案例; 本人有一个数组按钮  循环数组按钮 给每个按钮添加click事件 原本以为搞定但是出现了 每个按钮都是数组最后的方法 然后查找问题 发现onclike事件中的i ...

  6. Windows + Flask + Apache + wsgi踏坑总结

    据前人踏坑经历,拷贝如下: 1. Apache,mod_wsgi和Python都必须用相同版本的C/C++编译器生成,要么都是32位的,要么都是64位的,不能混用. 2. Apache和mod_wsg ...

  7. elasticsearch -- kibana安装配置

    Kibana 是为Elasticsearch设计的开源分析和可视化平台,你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互.你可以很容易实现高级的数据分析 ...

  8. Qt控制流简析

    前言: Qt库及其绑定python语言的PySide库.PyQt库在圈中已经是TD的标配了,Qt提供了多种快速绘制图形窗口的方式.但正是因为这个原因,导致很多TD局限在设计窗口外观的桎梏中,而忽略了Q ...

  9. html5课件外包-----swf/AS2/AS3/fla/ppt课件如何转换为html5交互课件/动画

    随着Adobe公司公布2020年将不再更新和维护flash,flash逐渐被html5取代,很多教育机构都在面临着如何将自己的flash交互课件产品转换到html5版本的问题,最近遇到非常多的客户一上 ...

  10. Django框架 连接Oracle -ServerName方式报错

    连接前: 修改后: