老师这段代码不太懂为什么if和esle执行同一个语句如果已经存在了为什么还要添加?
来源:1-5 实现属于我们自己的哈希表
眼睛眯起来
2021-01-07 21:40:07
1回答
这里想表达的是:
如果已经存在这个哈希值了,把这个哈希值对应的 value 换成新的 value(因为 value 可能不同);
如果不存在这个哈希值,则将这一组 key value 添加进去;
但因为 hashtable[] 里都是 TreeMap,而 TreeMap 的添加操作和修改 key 对应的 value 操作都是 put,所以最后结果就是这样了(如果在其他语言中,这两个操作对应的接口不一样,就可能不一样了)。
P.S. 我们自己实现的 BST,其实 add 函数也是这样设计的,没有 key 则加入新节点,有这个 key 则找到 key 对应的节点,替换 value。
最后,因为这两个语句是一样的,写成下面的逻辑也没问题:
public void add(K key, V value){
if(!hashtable[hash(key)].containsKey(key)){
size ++;
}
map.put(key, value);
}继续加油!:)
相似问题