HashMap 和 HashSet 的区别问题

wfeng007 2004-09-29 06:18:55
我在一次面试中 考官问
1。HashMap 和 HashSet 的区别
2。当有散列码冲突时 各是如何处理的

不止到 大家对第二个问题有什么 答案???
...全文
512 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfeng007 2004-09-30
  • 打赏
  • 举报
回复
谢谢各位
treeroot 2004-09-29
  • 打赏
  • 举报
回复
1.HashSet只是HashMap的一个视图,也就是HashSet是通过HashMap实现的。
2.对于冲突,HashMap是用链表来实现的,就是hashCode相同的话就肯定在一个链表上,不过
在同一个链表上的不一定hashCode相同!
可以参考:
http://blog.csdn.net/treeroot/archive/2004/09/20/111104.aspx
http://blog.csdn.net/treeroot/archive/2004/09/21/112246.aspx
http://blog.csdn.net/treeroot/archive/2004/09/21/112283.aspx
希望对你有一点帮助
minghuitian 2004-09-29
  • 打赏
  • 举报
回复
1.HashMap为散列映射,它是基于hash table的一个实现,它可在常量时间内安插元素,或找出一组key-value pair.
HashSet为散列集,它把查找时间看的很重要,其中所有元素必须要有hashCode().
2.个人认为,它们好象都是用的线性链表来解决散列码冲突的.即一个hashCode并不直接指向某个value,而是指向一串values.这些values以线性方式通过equals()方式进行查找.
ChDw 2004-09-29
  • 打赏
  • 举报
回复
HashSet内部就是使用Hashmap实现的,和Hashmap不同的是它不需要Key和Value两个值

往hashset中插入对象其实只不过是内部做了
public boolean add(Object o) {
return map.put(o, PRESENT)==null;
}
而已

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧