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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© prospect 初级黑马   /  2012-4-27 22:54  /  2847 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Map集合:该集合存储键值对,一对一对往里存。而且要保证键的唯一性。是不是说值就不必保证它的唯一性呢,就好比在一个暗箱里,里面有多个具有编号的小箱子,小箱子里存放有多个元素,这里元素就是键值对中的值,小箱子的编号就是键值对中的键。不知可不可以怎么去做理解啊?

5 个回复

倒序浏览
Map是成对放的,一放一对。。分成KEY和VALUE
Map是以键值出现的 常用实现类有HashMap,TreeMap
Map 是以键值对的方式进行存储 多用于用户登录名记录

回复 使用道具 举报
Map集合中的键(key)就相当于一个标记,而那个值(value)就是真正对应的值!
Map呢是根据键得到值,因此不允许重复。
其实呢Map只是JAVA中的一个接口。它有四个实现类。分别是是HaspMap,hashTble,LinkedHashMap和TreeMap.
当然个人认为最常用的还是HaspMap,读取速度很快,当然只允许一条记录的键为空,但是允许多条记录的值为空。由于速度快,当然是不支持线程同步的.
谢谢!
回复 使用道具 举报
本帖最后由 光sail 于 2012-4-28 12:14 编辑

楼主的理解是正确的。
Map (映射):以键(key)值(value)对形式存储数据,取出的值根据提取哪个键,获取这个键所存储的值。
回复 使用道具 举报
简单举例理解:key可以看做学号之类的定位符,value就是姓名可以任意值。
学号不可以重复,人的姓名可以重复,
找人的时候根据学号找就可以立即精准定位。

就是说,电脑是个很不智能的东西,
你告诉它要查找某个人的信息,他自己不知道人是什么,以及如何区分,
如果你用不唯一的条件去集合里筛选,那么它就糊了,搞不懂要返回哪一个给你。
所以要定位到一个元素,那个元素就必须要有自己的唯一特征,是别人没有的,
所以map的key——也就是特征——必须是唯一的,电脑才能定位到那个元素,
而定位到元素之后数据(value)可以是任意的,因为电脑已经知道key指定的这个元素就是要返回的信息。

hashmap什么的都是一样,要定位到具体的元素,那个元素就必须有自己的特征,
hashcode算出来的值可能会有重复,所以在hashcode重复之后又会调用equals进行第二次判算,
两次都重复的便认为数据已经定位到。

关键就是——电脑很笨,要定位就必须要把清楚的条件表达给它,不能有模糊判断。
==================================
另附:解释下为什么有equals了还要使用hashcode,hashcode算法根据数据特征计算出一个值,这个值有一个对数据分布进行管理的作用,可以在很快的时间内查找数据,效率比equals高,所以equals沦为了备用方法。
回复 使用道具 举报
我看楼主理解的可以,怎么容易理解怎么来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马