问个关于Hashmap的问题

面试官问道HashMap ,我说Hashmap是数组加链表的形式,他问我能不能直接申请一个很大数组,不要链表这样添加删除,随机访问都很快,不知道怎么回答,请问各位有什么看法?
全部评论
不能,总归你还得解决冲突,不是说数组大就没有冲突了。可以参考JDK1.8中HashMap的实现方式,是采用数组加红黑树的方式,能在冲突时由链表的O(n)优化到O(logn)。
点赞 回复
分享
发布于 2016-09-26 21:50
申请再大的空间也会有冲突啊,冲突了还得链表,要不然就得更改解决冲突的方法
点赞 回复
分享
发布于 2016-09-26 21:42
联易融
校招火热招聘中
官网直投
hashmap结合了数组快速的随机访问的和链表快速的插入删除。 去如果用大数组的话,那么在中间插入或者删除节点,效率会非常低
点赞 回复
分享
发布于 2016-09-26 21:53
变向问链表和数组结构区别
点赞 回复
分享
发布于 2016-09-26 21:57
链表拿来解决冲突的,再大也会冲突
点赞 回复
分享
发布于 2016-09-26 22:05
除非你用开放地址法去解决哈希冲突
点赞 回复
分享
发布于 2016-09-26 22:06
应该是问除了链表解决冲突还有哪些方法吧 比如再hash 
点赞 回复
分享
发布于 2016-09-26 22:36
链表和红黑树。。
点赞 回复
分享
发布于 2016-09-27 07:29
这是理想状态,没有冲突
点赞 回复
分享
发布于 2016-09-27 08:54
觉得面试官的意思应该是理想情况,初始化的时候装载因子设置的小一些。冲突概率会变低,只是空间需要更多。
点赞 回复
分享
发布于 2016-09-27 08:59
散列函数很重要啊,再大的数组,没有好的散列函数还是会冲突
点赞 回复
分享
发布于 2016-09-27 10:06

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务