r********7 发帖数: 102 | 1 这题是基本问题。 但是自己总拿不准怎么做才算正确。 面试官只是说 “HashMap
Implementation”。 我知道要考虑“hash function” "equal"两个函数。但是
1,如何重写这两个函数才算标准。
2, 用什么data structure 存储key 和 value 实现 hashmap呢?
只是说让implement hashmap, 但啥具体信息都没给,很摸不着头脑。
求大牛给个标准答案或者遇到类似XXX Implementation时的解题思路。 |
n*******p 发帖数: 72 | 2 去看一下java的标准实现。grepcode.com |
z****e 发帖数: 54598 | 3 底层是数组和链表
数组用来定位
然后每一个位置都是链表
当hashcode一致的时候
就用equals从链表开头挨个往后比较
然后hashcode要定位到数组的位置上去
这个稍微有些难,我也木有细看 |
r********7 发帖数: 102 | 4 谢谢解答,挺有道理的。。
您在哪看到的啊? 我想见见源代码。。呵呵
【在 z****e 的大作中提到】 : 底层是数组和链表 : 数组用来定位 : 然后每一个位置都是链表 : 当hashcode一致的时候 : 就用equals从链表开头挨个往后比较 : 然后hashcode要定位到数组的位置上去 : 这个稍微有些难,我也木有细看
|
z****e 发帖数: 54598 | 5 openjdk
【在 r********7 的大作中提到】 : 谢谢解答,挺有道理的。。 : 您在哪看到的啊? 我想见见源代码。。呵呵
|
z****e 发帖数: 54598 | 6 重写hashcode和equals的标准google一下就有
hashcode最常见的就是找一个prime,一般是31
然后编出hashcode,eclipse可以帮你做这个,右键点击屏幕后慢慢找
然后把你编hashcode的那些变量
作为equals判断的标准,其中只要有一个变量不一样,就不是同一个东西
然后这些编hashcode的变量,就是db里面的pk |