首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
请你来说一下map和set有什么区别,分别又是怎么实现的?
[问答题]
请你来说一下map和set有什么区别,分别又是怎么实现的?
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(428)
分享
纠错
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条回答
428收藏
2139浏览
热门推荐
相关试题
编程题 ,按照要求创建Java 应...
Java
评论
(1)
微型计算机有三种总线,他们分别是数...
编程基础
评论
(1)
计算机系统中用于管理硬件和软件资源...
编程基础
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题