黑马程序员技术交流社区

标题: 数组和LIST,MAP的区别! [打印本页]

作者: 魏志雷    时间: 2012-1-3 14:09
标题: 数组和LIST,MAP的区别!
本帖最后由 魏志雷 于 2012-1-3 16:07 编辑

这两天看数组,学过list和map,都可以存储元素,都可通过遍历读取,但是他们有什么本质区别么?

该贴已经同步到 魏志雷的微博
作者: 林晓波    时间: 2012-1-3 14:16
list容器是表示不连续的内存区域,不支持随即访问,可以高效的添加和删除元素
map是关联容器,是键-值对的集合,可以用键作为下标获取值,在查找方面有很高的效率

作者: 李盈科    时间: 2012-1-3 14:18
数组一旦创建就不能改变长度了 这就在操作的时候造成了麻烦。而List 和set的长度不是固定的,这就给造作带来了方便,ArrayList底层不就是数组么。
作者: 为梦而战    时间: 2012-1-3 14:35
本帖最后由 为梦而战 于 2012-1-3 14:39 编辑

     数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
List和Map集合可以存储和操作数目不固定的一组数据。且只能存放引用类型的的数据,不能存放基本数据类型.
         List按对象进入的顺序保存对象,不做排序或编辑操作。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。
       一般情况对数组的操作是按过程化思想操作,而对这些集合就按面向对象方法操作了,这些集合中都封装了很多用于操作它们的方法,根据List和Map各自的特点去操作其中的对象。
     
作者: 杨丹丹    时间: 2012-1-3 14:47
Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。
Map,持有 key-value pair,像个小型数据库。
作者: 沈样    时间: 2012-1-3 14:52
本帖最后由 沈样 于 2012-1-3 14:53 编辑

我觉得两个就是数组集合,都是存储对象的,不过要看用到什么场合了,list是顺序保存对象,map是键值对应保存对象的。list就是放东西的一个萝框,放进去拿出来,map则更像商店,你用相应的钱去买相应的东西,不能随便拿,要用相应的钱去买相应的东西。理论学得不好,不对请多指教
作者: 王冀0127    时间: 2012-1-3 15:37
首先,list是继承collection的 map而是直接继承object的collection是继承object的 ,collection中有list和set ,list为有序储存,可以重复 有角标  还有一些自己的方法 set为无序的 不可重复  而且方法是继承collection    map是一次存入一个元素。以键值对的形式存在,  其中必须要保持键(key)的唯一性,而且map里的方法何collection中的方法也有区别。
作者: 魏志雷    时间: 2012-1-3 16:07
为梦而战 发表于 2012-1-3 14:35
数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
List和Map集合可以 ...

加上上面的解释,大概懂了,随着深入学习可能会理解的更透彻
作者: 374122761    时间: 2012-1-3 16:13
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组

Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个 value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
作者: 为梦而战    时间: 2012-1-3 16:13
是啊,互相学习和交流可以少走弯路。也只有再进行不断的学习和应用的过程中才能理解的更透彻,体会的更深刻!
一起努力!




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