首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
请你来说一下map和set有什么区别,分别又是怎么实现的?
[问答题]
请你来说一下map和set有什么区别,分别又是怎么实现的?
添加笔记
求解答(0)
邀请回答
收藏(427)
分享
纠错
3个回答
添加回答
4
朗基努斯
map是接口,不提供实现。map的最典型的实现代表是Hashmap, 其底层是数组加链表的形式,数组保存对key哈希后的hash值,称为哈希槽;每个哈希槽后面都挂着一串链表,链表的每个节点都是一个entry,这个entry保存了<key,value>;每次要存某个<key,value>时,先根据key计算其hash值找到对应的槽,再顺着槽后面挂着的entry链表去找有无该key,有则直接更新该key所在entry的value值,无则将该<key,value>包装成entry插入到这个链表的开头;
map是双列集合,同时存储key和value; set是单列集合,只保存一个值。在底层,单列集合是通过屏蔽双列集合的一列来实现保存单列的(Hashset是通过屏蔽HashMap的value列实现的),HashSet把它要存储的值放到HashMap的key中,同时屏蔽掉value;这也解释了为什么HashMap的key不能重复,而HashSet的存的值不能重复,因为本质上两者是一样的。
发表于 2019-06-13 18:19:26
回复(0)
0
残月悲梦
Map 底层是 数组和链表实现的,数据是KEY,VALUE的结构。
Set 继承自Collection接口,底层也使用了map,add的时候其实调用的map的put方法。另外set是不可重复集.
发表于 2019-06-13 16:38:52
回复(0)
0
恋空。
find能解决的问题尽量我们findd解决
发表于 2019-06-13 11:19:10
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
上传者:
小小
难度:
3条回答
427收藏
2100浏览
热门推荐
相关试题
假定一个待哈希存储的线性表为(32...
哈希
评论
(1)
5.下列判断正确的是( )
资料分析
言语理解与表达
资料分析
评论
(1)
《拳皇97》最后BOSS是谁?
游戏常识
评论
(1)
《魔兽世界》中,下列不属于玩家可以...
游戏常识
评论
(1)
你有没有崇拜的偶像,你欣赏他/她身...
通用能力
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题