`
42087743
  • 浏览: 233778 次
  • 性别: Icon_minigender_1
  • 来自: 合肥&上海
社区版块
存档分类
最新评论

ArrayList的性能问题,大家看看

 
阅读更多
ArrayList的特点是可以动态改变长度,但是每次改变长度的时候性能花费是很大的,所以我们可以通过它自身的ensureCapacity()事先就给它决定好长度,这里有个前提,必须大概预测它的长度是多少.但是测试出结果出乎我的意料,大家一起来看看什么原因
		final int count = 100000;

		long startTime, stopTime, time;

		ArrayList<String> arrayList = new ArrayList<String>();
		ArrayList<String> arrayList2 = new ArrayList<String>();

		startTime = System.currentTimeMillis();
		for (int i = 0; i < count; i++) {
			arrayList.add("a");
		}
		stopTime = System.currentTimeMillis();
		time = stopTime - startTime;
		System.out.println("ArrayList插入100000个数的时间是:" + time);
		
		startTime = System.currentTimeMillis();
		arrayList2.ensureCapacity(count);
		for (int i = 0; i < count; i++) {
			arrayList.add("a");
		}
		stopTime = System.currentTimeMillis();
		time = stopTime - startTime;
		System.out.println("ArrayList在确定大小后插入100000个数的时间是:" + time);

// result:
// ArrayList插入100000个数的时间是:32
// ArrayList在确定大小后插入100000个数的时间是:62

分享到:
评论

相关推荐

    使用对象ArrayList填充DataGrid,C#源代码ArrayList MyList = new ArrayList();

    现在,让我们来看一下如何使用ArrayList MyList来填充DataGrid: ```csharp using System; using System.Windows.Forms; using System.Collections; // 创建一个自定义的对象类型,例如Person public class Person...

    ArrayList测试.

    1. 性能:由于ArrayList基于数组,因此插入和删除操作在列表中间时性能较差,因为需要移动大量元素。对于频繁的中间操作,考虑使用LinkedList或List(泛型版本)可能更合适。 2. 安全性:ArrayList是非线程安全的,...

    ArrayList底层原理

    面试中可能会遇到关于ArrayList的问题,比如询问ArrayList和LinkedList的区别,或者如何优化ArrayList的性能。ArrayList更适合于元素的随机访问和遍历,而不适合频繁的插入和删除。如果插入和删除操作较多,...

    JAVALinkedList和ArrayList的使用及性

    在进行性能分析时,不仅要看操作的时间复杂度,还要结合具体业务场景下的操作频率和数据规模,以做出最佳决策。对于大型项目,了解并合理利用这些数据结构的特性,能够显著提高代码的执行效率和整体性能。

    ArrayList、Vector、LinkedList 的区别.docx

    ArrayList、Vector、LinkedList 的区别 在 Java 集合框架中,ArrayList、Vector、LinkedList 是...ArrayList、Vector、LinkedList 三个类各有其特点和性能特征,在实际应用中,选择哪个类取决于具体的需求和性能要求。

    java使用ArrayList遍历及效率比较实例分析

    首先,我们来看看四种不同的遍历ArrayList的方法: 1. 使用Iterator迭代器: ```java Iterator it = arrL.iterator(); while(it.hasNext()){ arrLTmp1.add(it.next()); } ``` 这种方法创建了一个Iterator对象,...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    ArrayList和Vector都是实现了List接口的,但是ArrayList的性能比Vector好。 接下来,我们来看Map和HashMap的区别。Map是一个接口,而HashMap是一个实现了Map接口的具体类。Map提供了key到value的映射,一个Map中不...

    浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别

    首先,我们来看ArrayList和Vector的区别: 1. **同步性**: - `ArrayList` 是非线程安全的。这意味着在多线程环境下,如果不进行额外的同步控制,多个线程同时操作同一个ArrayList实例可能会导致数据不一致。 - ...

    java ArrayList和Vector的区别详解

    首先,让我们来看看ArrayList和Vector的相同点: 1. **继承关系**:两者都继承自AbstractList,并且实现了List接口,以及Serializable和Cloneable接口。 2. **底层实现**:ArrayList和Vector的基础结构都是基于数组...

    Java编程中为了性能需做的26件事 (编程必看)

    9. **避免依赖 finalize 方法**:finalize 方法用于资源清理,但其执行时机不确定,可能导致性能问题。推荐使用 try-with-resources 或手动关闭资源。 10. **使用基本数据类型代替对象引用**:如使用 "hello" 字符...

    c sharp 集合的问题

    接下来,我们来看看ArrayList。ArrayList是.NET框架早期版本中常用的动态数组,它可以存储任意类型的对象。创建ArrayList的实例如下: ```csharp ArrayList al = new ArrayList(); for (int i = 0; i ; i++) { al....

    Java集合1

    然而,这也带来了插入和删除操作的性能问题。当在ArrayList中增加或删除元素时,由于需要保持数组的连续性,系统会遍历整个数组,定位目标位置,并移动后续元素,这导致了较大的开销。在多线程环境下,ArrayList不是...

    java 动态数组的体现

    扩容操作是ArrayList性能的关键因素之一。虽然它提供了便利,但频繁的扩容会导致额外的时间开销。因此,如果我们知道要存储的大致元素数量,可以通过构造函数传入初始容量来避免不必要的扩容。 ArrayList提供了丰富...

    java 集合操作

    了解了这些基本概念后,我们来看看如何根据实际需求选择合适的集合类型: - 当需要快速访问元素,且插入和删除相对较少时,ArrayList是理想的选择。 - 如果在多线程环境中需要保证数据一致性,或者对性能要求不那么...

    Listview模拟的新浪随便看看界面

    在本项目"Listview模拟的新浪随便看看界面"中,我们看到的是利用ListView控件来模仿新浪网站上的"随便看看"功能,通过自定义适配器(Adapter)来填充数据,实现一个动态加载、用户体验良好的信息浏览界面。...

    java遍历机制性能的比较详解

    Java遍历机制性能的比较详解主要探讨了Java中三种常见的遍历方式——for循环、forEach循环和Iterator循环在处理ArrayList、LinkedList和HashSet等基础数据结构时的性能差异。本文将详细解析这些遍历机制的工作原理...

    C# ,NET面试题 大家看看还是有点帮助

    在C# .NET面试中,常见的问题涵盖了语言特性、并发控制、数据结构和异常处理等多个方面。以下是对部分面试题的详细解答: 1. **类与结构的区别** - 类是引用类型,结构是值类型。这意味着类的对象在内存中存储的是...

    mybatis一对多性能优化demo

    然而,如果不进行优化,这种关联查询可能会导致性能问题,比如数据量大时的内存消耗、多次数据库访问等。本Demo将重点探讨MyBatis中一对多性能优化的策略。 首先,我们来看一下MyBatis如何配置一对多映射。在`...

    java学习的课件,大家看看

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名。"thinkinjava"这个名字很可能指的是《Thinking in Java》这本书,这是一本由Bruce Eckel编著的经典Java教程,深受程序员喜爱。现在...

    每个程序员都应该看看的

    【标题】:“每个程序员都应该看看的” 【描述】:“适合于每个做程序开发的人,特别是刚开始学程序的!更应该好好看看!”这句话暗示了这份资料是面向初学者和程序员的通用指南,它可能包含了编程基础知识、最佳...

Global site tag (gtag.js) - Google Analytics