`
superonion
  • 浏览: 127035 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

数组(Array)与ArrayList之比较

    博客分类:
  • Java
阅读更多

一、数组与ArrayList的主要区别:效率、类型识别和primitive type。
数组(Array):最高效;但是其容量固定且无法动态改变;
ArrayList:容量可动态增长;但牺牲效率;
建议:
首先使用数组,无法确定数组大小时才使用ArrayList!


1.效率:
数组扩容是对ArrayList效率影响比较大的一个因素。
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。
ArrayList是Array的复杂版本,ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

2.类型识别:
ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。
注:jdk5中加入了对泛型的支持,已经可以在使用ArrayList时进行类型检查。
从这一点上看来,ArrayList与数组的区别主要就是由于动态增容的效率问题了。


3.ArrayList可以存任何Object,如String,Employee等,但不支持基本数据类型,除非使用wrapper。

 

 

转自:http://www.blogjava.net/flysky19/articles/92775.html

 

 

 

 

 

分享到:
评论

相关推荐

    C#中数组Array,ArrayList,泛型List详细对比

    在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析。 一、数组Array 数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的...

    在Java中怎样把数组转换为ArrayList?

     这个问题是”在Java中怎样把数组转换为ArrayList?”  Element[] array = {new Element(1),new Element(2),new Element(3)};  1.流行也是被多人接受的答案  普遍也是被多人接受的答案如下:  ArrayList...

    C_Array Array数组

    数组的概念 数组的申明和使用 Array类 ArrayList 泛型的使用 泛型的特征 泛型类、接口、方法的编写和使用 集合接口 枚举

    C# 中 Array和 ArrayList详解及区别

    C# 中 Array和 ArrayList详解及区别 一、Array 的用法 type[] typename=new type[size];  或者  type[] typename=new type[]{ };  Array类型的变量在声明的同时必须进行实例化(如果初始化至少得初始化数组...

    Python列表list数组array用法实例解析

    本文以实例形式详细讲述了Python列表list数组array用法。分享给大家供大家参考。具体如下: Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。   创建列表   复制代码 代码如下:sample_...

    C# 没有动态的数组,可以用arraylist或list取代

    代码如下:using System.Collections; ArrayList a = new ArrayList(); a.Add(“a”);//这里”a”可以改成你要取出的字符串 a.Add(“b”); 运行后a就相当于一个... 您可能感兴趣的文章:C#中数组Array,ArrayList,泛型

    C#中Array与ArrayList用法及转换的方法

    ArrayList与Array的区别概述  ArrayList 是数组的复杂版本。ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能。例如:  Array 的容量是固定的,而 ArrayList 的容量是根据需要自动...

    js中的数组Array定义与sort方法使用示例

    Array数组相当于java中的ArrayList 定义方法: 1:使用new Array(5 )创建数组 var ary = new Array(5); 2:使用Json语法,var ary = 【1,3,4】; 数组排序: 例: 代码如下: function sort(){ var ary=[11,12,3,5...

    ArrayList深度剖析与简单实用

    ArrayList深度剖析与简单实用、 ArrayList重要的方法和属性(1)构造器 ArrayList提供了三...4、ArrayList与数组转换 Array的复杂版本 ArrayList常用方法 ArrayList同步机制 ArrayList内存节省方法 ArrayList使用建议

    跟我学Java-day14-ArrayList集合.pdf

    day14-ArrayList集合 1.ArrayList 1.1ArrayList类概述【理解】 什么是集合 ...ArrayList<String> array = new ArrayList(); //添加元素 array.add("hello"); array.add("world"); array.add("java");

    解析C#中[],List,Array,ArrayList的区别及应用

    本篇文章主要是对C#中[],List,Array,ArrayList的区别及应用进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    jarraypool:Java Array和ArrayList池,包括堆池,不安全池

    数组:IntArray,LongArray,ShortArray,CharArray,BooleanArray,StrArray,DecimalArray ArrayList:IntArrayList,LongArrayList,ShortArrayList,CharArrayList,BooleanArrayList,StrArrayList,...

    c# 读取文件内容存放到int数组 array.txt

    代码如下:using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls...

    C# 动态数组类文件

    自己写的C#动态数组类库,类似于Arraylist类,比较简洁,主要功能都有,适合学习交流,完成作业。

    C#嵌套循环和数组的详细讲解PPt

    数组的应用环境 一维数组的的定义 一维数组的元素的引用 一维数组的应用 1、掌握break语句的应用 2、掌握continue语句的应用 3、理解循环嵌套的定义 4、掌握循环嵌套的执行过程 ...使用System.ArrayList 对象

    php数组添加元素方法小结

    本文较为详细的总结了php数组添加...Array_push($ArrayList, el1, el2 ... eln); 但其实有一种更直接方便的做法,代码如下: $ArrayList = ArrayListay(); $ArrayList[] = el1; $ArrayList[] = el2; ... $ArrayList[]

    详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法

    1、list是python中内置的数据类型,其中的数据的类型可以不相同,如java中List也可以不用相同的数据,但是为了格式的统一,就要用到泛型或者ArrayList。array中的数据类型必须是一样的。 2、list中保存的数据的存放...

    array-list:简单的数组列表实现

    var arrayList = require ( 'array-list' ) // with limit var arr = arrayList ( 100 ) // without limit var arr = arrayList ( ) 原料药 arrayList([limit]) 限制 类型: integer 指定数组的限制。 它必须是一...

    s04-array-and-arraylist-recursion-marycottrill:s04-array-and-arraylist-recursion-marycottrill由GitHub Classroom创建

    Array和ArrayList递归对于家庭作业,您编写了两种方法来练习递归。 您应该练习对所有这些问题使用递归! 对于所有这些方法,您都应该编写递归方法和包装器方法。 您可以调整递归方法的参数,但不要更改包装方法的...

Global site tag (gtag.js) - Google Analytics