黑马程序员技术交流社区
标题:
求教!Collection和Map之间的区别?
[打印本页]
作者:
孙宇晨
时间:
2012-5-8 09:56
标题:
求教!Collection和Map之间的区别?
Collection和Map之间的区别?
作者:
赵玮_Tom
时间:
2012-5-8 10:00
毕老师说的好,collection中存的都是一票单身汉,map集合中存的是夫妻。
作者:
胡元
时间:
2012-5-8 10:04
好大的题目呀,我试着说一下
Collection是对象集合的容器,只是针对单个对象,用毕老师的话说,集中了一大票单身汉,就是对象就对啦!
而Map集合了键值对,里面的是一一对应的对象,一个键对应一个值,键不能重复。
用毕老师不恰当的比喻,一个丈夫对应一个妻子,丈夫不能重复!(妻子可以重复){:soso_e127:}
作者:
郭振
时间:
2012-5-8 10:17
Map 散列表: 也是个接口。是以键值对方式实现的集合, Map 描述了:(key:value) 成对放置的集合, key不重复, Value可以重复. key重复算一个. Map适合检查查找.
主要实现: HashMap(散列表算法实现)/ Hashtable
A HashMap 新, 非线程安全, 不检查锁, 快
B Hashtable 旧 (1.2以前) 线程安全, 检查锁, 慢一点
Collection是个集合超级接口,其中List,set都是Collection的子接口。
作者:
张志阳
时间:
2012-5-8 10:19
你这个题目真的好大啊
1) Collection 。 一组对立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set 不能有重复元素。
2) Map 。 一组 成对的“键值对”对象。初看起来这似乎应该是一个Collection ,其元素是成对的对象,但是这样的设计实现起来太笨拙了,于是我们将Map明确的提取出来形成一个独立的概念。另一方面,如果使用Collection 表示Map的部分内容,会便于查看此部分内容。因此Map一样容易扩展成多维Map ,无需增加新的概念,只要让Map中的键值对的每个“值”也是一个Map即可。
Collection和Map的区别在于容器中每个位置保存的元素个数。Collection 每个位置只能保存一个元素(对象)。此类容器包括:List ,它以特定的顺序保存一组元素;Set 则是元素不能重复。
Map保存的是“键值对”,就像一个小型数据库。我们可以通过“键”找到该键对应的“值”。
Collection – 对象之间没有指定的顺序,允许重复元素。
Set – 对象之间没有指定的顺序,不允许重复元素
List– 对象之间有指定的顺序,允许重复元素,并引入位置下标。
Map – 接口用于保存关键字(Key)和数值(Value)的集合,集合中的每个对象加入时都提供数值和关键字。Map 接口既不继承 Set 也不继承 Collection。
List、Set、Map共同的实现基础是Object数组
作者:
杨威
时间:
2012-5-8 10:20
他们都是接口,都提供了对集合对象进行基本操作的方法,如楼上所说的毕老师的经典例子,“collection中存的都是一票单身汉,map集合中存的是夫妻”,可以理解为collection中存储的是不相关的元素,(实质上,在元素重复上collection的set中元素还是有影响的),map中存储的是键值对。collection中包含list和set,List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.
作者:
廖理
时间:
2012-5-8 10:26
Collection和Map的主要区别在于存储的内容和取数据的方式
1. Collection中存放的是引用类型的数据,
而Map中存放的是成对存方的是成对的引用数据,
这种成对的数据类型通过某种映射关系形成关联关系
2.由于二者存储的数据不一样,也就决定了他们的取数据的方式的不同
Collection有自己的迭代器,通过迭代器来取数据,而Map没有自己的
迭代器,所以要将其首先转成Set集合在对其进行元素取出。Map一般
通过KeySet将键或Entry方法将映射关系来转成Set集合,再通过相应
的方法取出Map中
的相应键值对
作者:
谭景宾
时间:
2012-5-8 10:32
Collection接口,包含list和set子接口
Collection和Map接口之间的主要区别在于:Collection中存储了一组对象,而Map存储关键字/值对。
在Map对象中,每一个关键字最多有一个关联的值。
Map:不能包括两个相同的键,一个键最多能绑定一个值。null可以作为键,这样的键只有一个;可以有一个或多个键所对应的
值为null。当get()方法返回null值时,即可以表示Map中没有该键,也可以表示该键所对应的值为null。因此,在Map中不能由get()方法来判断Map中是否存在某个键,而应该用containsKey()方法来判断。
继承Map的类有:HashMap,HashTable
作者:
隋营营
时间:
2012-5-8 10:57
本帖最后由 隋营营 于 2012-5-8 10:58 编辑
最主要的区别有:
Collection 与 Map 是两个不同的接口(看图),有不同的实现类。
存储的元素对象方式不同:
Collection存储单个元素对象
Map存储一对元素对象(key-value)
3. 遍历输出方式不同:
以Collection的实现类
ArraList
为例:
ArrayList
asl
= new ArrayList();
......
for(Iterator itr=
asl
.iterator(); itr.hasNext();)
{ System.out.println(itr.next()); }
以Map的实现类
HashMap
为例:
Map<Integer,
String
>
sm
= new HashMap<Integer, String>();
......
Set<Integer> ss = sm.
keySet
();
//Map容器中没有定义iterator()方法
for (Iterator<Integer> sir = ss.iterator(); sir.hasNext();) {
System.out.println(sm.get(sir.next()));
}
2012-05-08_104351.png
(14.87 KB, 下载次数: 37)
下载附件
2012-5-8 10:44 上传
Collection and Map
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2