8分58秒,为什么不是hashtable(key).put(key,value)?

来源:14-5 实现属于我们自己的哈希表

小蜗牛有大理想

2023-12-09

老师好,8分58秒,为什么不是hashtable(key).put(key,value)?
或者hashtable[hash(key)].put(hash(key),value)?

写回答

1回答

liuyubobobo

2023-12-14

key 可以是任意值,比如字符串,hash(key) 保证了把 key 转换成一个合法的索引(0 - M-1 之间的整数值。)


hashtable[hash(key)].put(hash(key),value) 使得所有的 hashtable[hash(key)] 这个 map 中的键是一样的,都是 hash(key)。这首先使得 hashtable[hash(key)] 是一个 map 没有必要。其次,最重要的,hashtable[hash(key)] 为什么要设立成一个 map?为了解决哈希冲突,当 hash(key) 一致的时候,key 可能不一样。所以我们才在 hashtable[hash(key)] 存储不同的 key。hashtable[hash(key)].put(key,value) 存储了不同的 key 对应的 value。


继续加油!:)


0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程