黑马程序员技术交流社区

标题: 集合和数组的优缺点? [打印本页]

作者: 文江江    时间: 2014-3-9 12:58
标题: 集合和数组的优缺点?
本帖最后由 文江江 于 2014-3-9 17:04 编辑

集合和数组的优缺点?详解
作者: .......    时间: 2014-3-9 13:03
|-- 集合 集合是可变长度的,而且集合提供可更丰富的对元素进行操作的功能,集合在不考虑泛型的情况下         可以存入各种数据类型
|-- 数组 数组是固定长度的,只能对元素进行设置或者获取.只能存储一种数据类型
作者: 三眼皮    时间: 2014-3-9 13:14
集合优点:1、可以不确定长度,根据实际需要添加元素,可以节省空间,而且更好的解决现实问题。数组则是初始化时就固定长度,不可改变。2、集合可以添加任何类型的元素,数组则必须是同一类型。3、结合可以通过equals和comparTo方法自定义元素的比较标准,实现任何类型的元素的比较。4、集合还有许多自带的功能,能解决更多的实际问题
作者: 房建斌    时间: 2014-3-9 13:15
一般情况下都用集合,不过在性能上来说数组比集合要高的多--集合能动态的扩展,数组的长度是固定的,是不能扩展的。在java编程思想作者建议是,除非必须追求很高的性能,否则,都建议使用集合的。具体可以参照java编程思想数组一章的内容
作者: 欧阳疯    时间: 2014-3-9 13:43
数组:
    数组是java语言内置的数据类型,它是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,它的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,所有不用担心和C和C++一样不做边界检查而出现的问题,当然检查边界会以效率为代价。
数组和其他容器体现在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,不论是效率还是类型检查,无疑是先考虑数组的,但是数组最大的弱点就是功能太弱小,所有才会有其他容器的出现。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2