`
bestxiaok
  • 浏览: 444015 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ArrayList的性能优化

阅读更多
    size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固定时间运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有操作都以线性时间运行(大体上讲)。与用于LinkedList 实现的常数因子相比,此实现的常数因子较低。
每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。
在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。
测试程序:
private static void testlist() {
 List al = new ArrayList(); 
long s1 = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) { 
al.add("s"); 
}
 long s11 = System.currentTimeMillis();
 System.out.println("没有设定大小:" + (s11 - s1));
 List bl = new ArrayList(10000000); 
 s1 = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
 bl.add("s");
 }
 s11 = System.currentTimeMillis();
 System.out.println("设定大小:" + (s11 - s1));
ArrayList cl = new ArrayList(1000);
 s1 = System.currentTimeMillis(); 
for (int i = 0; i < 10000000; i++) {
 cl.add("s");
 }
 s11 = System.currentTimeMillis(); 
System.out.println("设定大小为小于最大数量的时候:" + (s11 - s1));
 }

测试结果:
没有设定大小:843 设定大小:235 设定大小为小于最大数量的时候:765
结论:
在已知List中要存放多少条数据时,应该先设定好大小,然后再向List中添加数据,这样效率会提高3倍左右。



PS:很长时间没研究代码了,原来以前写的好多代码都不规范。


这适用于jdk1.5以后的版本,以前的版本没看过。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    2Java性能优化二.zip

    二,JAVA性能优化之代码优化 代码调优是在软件开发中,或者是软件开发完毕后,软件维护过程中进行的程序代码的改进和优化.代码优化涉及诸多编码技巧,须要开发者熟悉相关的语言API ,并在适合的场景中正确的使用相关API...

    .net性能优化宝典

    1. C#语言方面... 4 1.1 垃圾回收... 4 1.1.1 避免不必要的对象创建...... 1.1.2 不要使用空析构函数 ★....4.1 JScript性能优化的基本原则... 24 4.2 JScript语言本身的优化... 24 4.3 DOM相关... 27 4.4 其他... 28

    Java优化编程(第2版)

    4.2.2 字符串的length()方法与性能优化 4.2.3 tochararray()方法与性能优化 4.2.4 字符串转化为数字 4.3 系统i/o类 4.3.1 java语言中输入/输出流 4.3.2 通过系统缓冲流类提高i/o操作效率 4.3.3 通过自定制缓冲区提高...

    Android性能优化之被忽视的优化点

    Android性能优化之被忽视的优化点本篇文章就博主本人的理解来讲述一些在Android开发中可以优化的地方ArrayList和Vector都是内部以数组实现的List,它们两唯一的区别就是对多线程的支持,ArrayList是线程不安全的,而...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲慎重使用正则表达式05讲ArrayList还是LinkedList使用不当性能差千倍07讲深入浅出HashMap的设计与优化08讲网络通信优化之IO模型:如何解决高并发下IO瓶颈09...

    高效C#编码优化原则

    本文汇总了高效C#编码常见的优化原则,对于进行C#程序设计来说有很...ArrayList的性能低下任何对象添加到ArrayList中都要封箱为System.Object,从ArrayList中取出数据都要拆箱回实际的类型  泛型集合类的高性能,泛型集

    my三期教程.txt

    性能优化之MySQL数据库性能优化 Mycat、sharding-jdbc 性能优化之Tomcat性能优化 设计模式与实战操作 框架核心原理分析 SpringIOC、AOP、事物原理分析 手写Spring事物 Spring核心源码分析 手写ORM框架 Arraylist...

    高性能高并发服务器架构

    高并发的解决方法有俩种,一种是使用缓存、另一种是使用生成静态页面;还有就是从最基础的地方优化我们写代码减少不必要的资源浪费:( 1.不要频繁的new对象,...使用JAVA中效率高的类,比如ArrayList比Vector性能好。)

    javalist数据结构-Java数据结构-------List.pdf

    优化策略:在能有效评估ArrayList数组初始值⼤⼩的情况下,指定其容量⼤⼩有助于性能提升,避免频繁的扩容。 public booleanadd(E e) { ensureCapacityInternal(size+ 1); //Increments modCount!! 确保内部数组有...

    java技能总结.docx

    掌握Java语法和基础:掌握Java的语言特性、数据类型、运算符、控制结构、面向对象编程等基础知识...掌握Java性能优化:掌握Java性能优化的相关技术,如JVM参数调优、代码优化、并发编程等,能够提高应用程序的性能和效

    Java面试通关宝典:深度解读核心知识点与实战技巧,全面提升面试表现力与技术实力

    JVM与性能优化:这部分问题涵盖了JVM内存模型、垃圾收集、性能调优等内容。例如,解释JVM的内存区域划分和作用;理解垃圾收集算法和调优策略;讨论如何分析和优化Java应用程序的性能等。 通过深入学习和理解这些问题...

    H马Java面试专题课

    ├─day01-基础篇 │ 02-二分查找_演示.mp4 │ 06-二分查找_选择题目1.mp4 ...│ 36-LinkedList_vs_ArrayList_随机访问性能比较.mp4 │ 37-LinkedList_vs_ArrayList_增删性能比较.mp4 │ 38-LinkedLis

    Java中foreach使用过多会有性能问题?

    ”我当时一听纳闷了,以前的时候看到文章说JVM对foreach语法糖是有做优化的,在很多博客也是推荐使用foreach的,为什么突然会有这么个说法呢,躺床上看到个博客 Java 性能优化的五大技巧 的第五点钟第2条中说“避免...

    阿里百度美团面试题合集

    性能优化、设计模式、UML 的掌握 .. Spring 框架:重点掌握(BAT 每次必问) .. 分布式相关:Redis 缓存、一致 Hash 算法、分布式存储、负载均衡等。 .. 微服务以及 Docker 容器等。 . ArrayList 和 LinkedList 底层 ...

    Java集合类操作优化经验总结

    本文首先针对 Java 集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括 LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap 等,然后对一些实现类的实现方式和使用经验进行讲解...

    viewPager快速实现自定义页面滑动翻页.zip

    1.功能说明: 用户导入jar包后,只需要自己创建布局文件(xml布局文件),使用本jar包,即可生成可滑动的页面。...//注:因为此jar只适用于对性能要求不高,作为简单的模板使用,因此,未作性能优化。当然欢迎指教。

    viewPagerTools.zip

    Android使用viewPager完成页面滑动功能。 使用IDE:Android Studio. 1.功能说明: 用户导入jar包后,只需要自己...//注:因为此jar只适用于对性能要求不高,作为简单的模板使用,因此,未作性能优化。当然欢迎指教。

    Java高并发实战_java高并发_高并发_

    介绍了两个重要的并行性能评估定律, 以及 Java 内存模型 JMM。第2章介绍了 Java 并行程序开发的基础, 包括 Java 中 Thread 的基本使用方法等第3章介绍了 JDK 内部对并行程序开发的支持, 主要介绍 JUC (Java.util....

    JavaSE基础面试题.docx

    13.如何实现Java优化 14.各个集合在项目中的应用场景 15.对ArrayList扩容的理解 16.使用LinkedList删除元素的步骤 17.HashMap、Hashtable、ConcurrentHashMap底层实现原理及区别 18.HashMap底层数据结构 19.说说...

Global site tag (gtag.js) - Google Analytics