浅谈Array和ArrayList的区别

参考:http://www.cnblogs.com/a164266729/p/4561651.html

(1)ArrayList是Array的复杂版本

ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

(2)存储的数据类型

ArrayList可以存储异构对象,而Array只能存储相同数据类型的数据。

(3)长度的可变

Array的长度实际上是不可变的,二维变长数组实际上的长度也是固定的,可变的只是其中元素的长度。而ArrayList的长度既可以指定(即使指定了长度,也会自动2倍扩容)也可以不指定,是变长的。

(4)存取和增删元素

对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。另外,ArrayList是动态数组,它不包括通过Key或者Value快速访问的算法,所以实际上调用IndexOf、Contains等方法是执行的简单的循环来查找元素,所以频繁的调用此类方法并不比你自己写循环并且稍作优化来的快,如果有这方面的要求,建议使用Hashtable或SortedList等键值对的集合。

好了,关于这两个数据结构的对比我们就到这里,如果有觉得不妥的地方,欢迎大家指正。

附Array和ArrayList的相互转换:

public class Test {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("王利虎");
list.add("张三");
list.add("李四");
int size=list.size();
String[] array = (String[])list.toArray(new String[size]);
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}
}
package test.test1; 

import java.util.Arrays;
import java.util.List; 

public class Test {
public static void main(String[] args) {
String[] array=new String[3];
array[0]="王利虎";
array[1]="张三";
array[2]="李四";
List<String> list=Arrays.asList(array);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}

原文地址:https://www.cnblogs.com/liulin1187740947/p/9164870.html

时间: 2024-10-13 07:24:03

浅谈Array和ArrayList的区别的相关文章

浅谈 Cookie 与 Session 的区别

1.cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范.网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求附上这些cookies . 具体来说cookie机制采用的是在客户端保持会话状态的方案.它是在用户端的会话状态的存贮机制,他需要用户

浅谈SEO与SEM的区别

很多刚接触SEO的朋友,对于SEO都有一些迷茫和不解.今天,若言就简单的为大家介绍一下什么是SEO.什么是SEM.SEO与SEM的区别,希望对大家能有所帮助! 搜索引擎优化(Search engine optimization,简称SEO).针对搜索引擎的理论机制,对网站结构网页文字语言和站点间的互动外交策略,进行很里规划部署来发掘网站最大潜力.从而使其在搜索引擎具有较强的自然排名竞争优势.从而,促进企业在线销售和强化网络品牌. 讲得通俗一点,就是针对搜索引擎对自己的网站进行优化.SEO主要是通

浅谈 unix, linux, ios, android 区别和联系

浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux ??UNIX 操作系统(尤尼斯), 是一个强大的多用户.多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由 KenThompson.Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发.目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX 规范的

Java面试题之Array和ArrayList的区别

Array和ArrayList的区别: 1.Array类型的变量在声明的同时必须进行实例化(至少得初花数组的大小),而ArrayList可以只是先声明: 2.Array始终是连续存放的:而ArrayList的存放不一定连续: 3.Array对象的初始化必须指定大小,且创建后的数组大小是固定的:而ArrayList的大小可以动态指定,空间大小可以任意增加: 4.Array不能随意添加.删除:而ArrayList可以在任意位置插入和删除 原文地址:https://www.cnblogs.com/hu

从内部入手,浅谈malloc和new的区别

想要理解一样事物,就要先用自己的语言去描述一件事物.在我查阅资料后,发现malloc函数简单说来就是空闲内存空间收集器,并把空闲空间关联起来,用术语来说就是:将空闲内存块合并起来并称为"闲置链表".然后在这块空闲空间进行划分,划出用户需要的与用户不需要的.然后把用户需要的给用户,不需要的返还给"闲置链表".而用户使用free释放时候也是扔回去的过程.但是这时候的空闲空间是间断的片段,malloc函数就需要去整理整合这些片段,若空间达不到用户需要,malloc就会返还

浅谈json和数组的区别

json和数组都是存储数据的,但是也是有一定区别的. 区别一:json的下标与数组的下标不一样,json的下标是字符串,数组的下标是数字. <script> window.onload=function(){ var json={name:'Juce',age:'23'}; alert(json.age);//又等于alert(json[age]) var arr=['a','b','c']; alert(arr[0]); } </script> 区别二:json没有长度,而数组有

浅谈软件工程与计算机科学的区别

从本科阶段来看,几乎没什么区别.以我在的厦大计算机科学系和软件学院来说,我们系里面还分理论和应用两个方向,软件学院也有分方向,不过只是平台不同,都是软件应用方面的.所以数学课上,我们系理论方向的学生上的是数分.高代,比较难,而我们应用的和软件学院一样上高数.线代.计算机科学相对就有更数学.更学术的方向,比如去研究数理逻辑啊什么的,软件学院则更偏应用. 还是拿我校为例(不同学院还是不一样的),我校的软件学院要上好几门高级编程语言的课C/C++/JAVA等,而我们当时就上了一个学期的C,再加5周小学

浅谈angular2与angularJS的区别

简介 大家好,今天给大家介绍一下angular,相信做过前端的小伙伴们都知道angular的大名,angularJS自2012年发布起就受到了大家的广泛关注.他首次提出了双向绑定概念让所有人都耳目一新,2016年angular2正式被发布,那么angular2到底有什么值得期待的地方呢,接下来讲一下angular2吸引人的地方. 1.1.1  angularJS的困境以及angular2的新特性 首先呢我们讨论一下angularJS的一些不足之处: 1.饱受诟病的性能问题 通过检查进行数据更新,

java中的装饰设计模式,浅谈与继承之间的区别

最初接触装饰设计模式,一直搞不懂这么做的意义是什么,看了网上很多的资料,对于与继承的区别并没有很清楚的分析,直到看到这篇博客:http://www.cnblogs.com/rookieFly-tdiitd/p/4914593.html 这篇就很清楚的解释了装饰设计模式与继承之间的区别.下面是我自己的一些理解. 一.概念 装饰模式又称为包装模式,动态地给对象添加功能,是继承关系的一种替代方法. 二.选择 子类通过继承也能增加功能,但是关于装饰模式与继承之间如何选择,请看下面的例子. 假设:煎饼是父