A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李大伟 高级黑马   /  2013-6-4 11:05  /  1439 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李大伟 于 2013-6-6 14:34 编辑

数组和集合的区别集合变数组的好处
数组变集合的好处

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

4 个回复

倒序浏览
1.数组的长度定义了就不能改变了,不能很好的适应元素数量动态变化。例如你定义一个长度为50的数组,结果要存储的数据发现增加了,你就要重新定义数组;如果数据变小了,则造成空间的浪费。
2.数组采用在内存中分配连续空间的存储方式,根据下标获取对应的元素信息,但是要根据元素信息查找时,需要多次比较。
3.数组在进行频繁插入,删除操作时同样效率低下。
集合的优点:ArrayList和数组采用相同的存储方式,它的优点在于遍历元素和随机访问元素的效率比较高。LinkedList采用链表存储方式,优点在于插入,删除元素时效率比较高。HashMap则在查询指定元素时效率较高。
总结:数组再处理一些问题时存在缺陷,而集合弥补了数组的缺陷,它比数组更灵活实用,提高开发效率,而且不同的集合可适用于不同的数据存储。
只能说个大概,具体情况具体分析!

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
数组由于定义的时候需要定义类型,如int[] arr、char[] arr、Person[] arr ... 等,所以数组中的元素类型是固定的,而且数组的长度也是固定不变的(同样在定义时确定了)

集合也是一种容器
集合的长度不是固定的(动态变化,如ArrayList初始10,超出长度后,自动增加原长度50%的"空间");
集合中元素的类型不是固定的,可以是String,可以是Person类,可以是 int 型,可以是boolean型 ...

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
在c语言学习中,当我们遇到大量相同类型数据时,我们会定义该类型数组来存数这些数据,在java中,我们在面向对象编程中常常需要定义很多相同属性和方法的对象,那么这些对象存储在哪里,怎么存储才能使用户访问这些对象更加的快捷方便?对比c语言中数组java中集合具有相同的功能,但是集合具有动态存储的特点,可以更加灵活的存储、访问、调用对象。

  在面向对象编程中,当存储的对象个数不确定时,以及存储的对象是复杂对象,具有映射关系时,我们就需要用集合存储。集合可以理解存放一组相同属性和方法的对象的容器。


集合框架满足的条件:

                        1.对外接口

                        2.具体实现类

                        3.算法


简单来说,数组是存储相同类型变量的,集合是存储相同类型对象的

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马