java语言中集合与数组的区别?

说自己的理解思路要清晰分条叙述1····2····3····请不要复制粘贴!!!... 说自己的理解 思路要清晰 分条叙述 1····2····3····
请不要复制粘贴 !!!
展开
 我来答
xb_447215
2013-07-31 · TA获得超过2038个赞
知道大有可为答主
回答量:3702
采纳率:0%
帮助的人:3919万
展开全部
数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素。但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变的。还有一点,JAVA里面的数组是会做边界检查的,所以当你越界访问时,会抛出RuntimeException,所以不用担心在C或C++因为不做边界检查而出现的问题了,当然边界检查是以牺牲效率为代价的。数组与其它容器类的区别体现在三个方面:效率、类型识别和可以持有primitives。 JAVA里面提供的其他容器还包括List,Set和Map。他们处理对象的时候就好像这些这些对象都没有自己的类型一样,容器将它所含的元素都看成是JAVA中所有类的根类Object类型的,这样我们只需创建一种容器,就能把所有的类型的对象全部放进去。但是当取出的时候,那就需要我们自己进行类型转换了,不过在JAVA Tiger版里面新引入了“泛型”的概念,结合容器类一起使用就可以解决类型转换的问题,关于“泛型”这就不详细讲解了。从上面的角度来看,这种做法很不错,但是就是苦了primitives,如果是常量的话,可以把primitive转换成wrapper类然后放进容器里面,如果是变量的话,那就只能放在你自己的类里了。与其他容器类相比,数组会在编译的时候作类型检查,从而防止你插入错误类型的对象,或者在提取对象的时候把对象的类型给搞错了,JAVA在编译和运行的时候都能阻止你将一个不恰当的消息传给对象。至于效率,数组无疑是要高于其他容器类的,因为有些容器类的实现就是基于数组的,比如ArrayList。不论从类型检查还是效率的角度来考虑,我们首选数组来作为容器都是没错的,但是数组的缺点就是功能太弱了,所以才会有容器类的出现。 要多说几句的就是,java.util包里面有一个Arrays类,它包括了一组可以用于数组的static的工具方法,其中最基本的是四个方法:用来比较两个数组是否相等的equals();用来填充数组的fill();用来对数组进行排序的sort();以及用于在一个已经排序的数组中查找元素的binarySearch()。所有这些方法都对primitives和Object进行了重载。此外还有一个asList()方法,它接受一个数组,然后把它转成一个List容器。JAVA标准类库还提供了一个System.arraycopy()的静态方法,它能以较快的速度拷贝数组,对primitive和Object都进行了重载,但是注意当对Object数组进行拷贝时,进行的是浅拷贝
x1aoshang
2013-07-31 · TA获得超过451个赞
知道答主
回答量:52
采纳率:0%
帮助的人:51.6万
展开全部

数组:

    数组是java语言内置的数据类型,它是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,它的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,所有不用担心和C和C++一样不做边界检查而出现的问题,当然检查边界会以效率为代价。

数组和其他容器体现在3个方面:

  1. 效率 

  2. 类型识别

  3.  可以持有primitives。

 

 

集合:

    JAVA还提供其他容器,list,map,set,它们处理对象的时候就好像这些对象没有自己的类型一样,而是直接归根于Object,这样只需要创建一个容器,把对象放进去,取出时转换成自己的类型就行了。

 

    ArrayList:JAVA包里有一个java.util.ArrayLisy的类,它包括可以用以static的工具方法;

    其中最基本的4个方法:

    1、用来比较2个数组是否相等的eques()

    2、用来填充数组的fill()

    3、用来排序数组的sort()

    4、以及用于在一个已经排序的数组中查找元素的binarySearch()。

 

    这些方法都是对primitives和Object进行了重载,此外还有一个asList()方法,它接受一个数组,然后把它转成一个List容器此为java标准库还提供了一个 System.arraycopy();的静态方法,能够以较快的速度拷贝数组,对primitive和Object进行了重载,要注意的是,当进行Obeject拷贝的时候,进行的是浅拷贝。

 

     区别:

    至于效率,数组无疑是高过其他容器的,因为有些容器类的实现就是基于数组的,比如ArrayList,不论是效率还是类型检查,无疑是先考虑数组的,但是数组最大的弱点就是功能太弱小,所有才会有其他容器的出现。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chujiangke001
2013-07-30 · TA获得超过1605个赞
知道小有建树答主
回答量:1352
采纳率:0%
帮助的人:693万
展开全部
java语言中集合可以理解为模板的数组。
可以为对象也可以为基本数据类型
还有自己的算法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丹阳小铺
2013-07-31
知道答主
回答量:8
采纳率:0%
帮助的人:3.6万
展开全部
  1. 数组的长度有限,Collection集合类库的容量可以任意调节

  2. 数组的可以存放任意数据,数据类型必须一致,集合只能存放对象,可以同时存放各种类型的对象

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
缘竹临溪
2013-07-30 · TA获得超过1123个赞
知道小有建树答主
回答量:579
采纳率:0%
帮助的人:416万
展开全部
数组:存储基本数据类型
集合:存储对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式