首页
题库
面试
求职
学习
竞赛
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收藏
2105浏览
热门推荐
相关试题
体育课测验(二)
广度优先搜索(BFS)
拓扑排序
dfs
评论
(2)
游戏内数据分析涉猎的少,如何证明自...
评论
(1)
之前的经历中单品数据分析的经验丰富...
评论
(1)
什么样的人适合做数据分析
评论
(1)
2022 诺瓦科技 Perl re...
perl
System Verilog
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题