Rehashing

2016, Apr 13    

Rehashing

@(算法)[算法, Hash Table]

这一题怎样用一句话描述?

这是一道模拟题,说的是hash表的长度是不定的,当有两个元素被hash函数map到同一个位置时,就要把hash表的长度加倍。这时候需要我们返回rehashing后的hash表

用到什么算法?什么数据结构?

暴力,hash map

通过这题学到了什么?

hash map的迭代操作,有两种,第一种是可以同时拿到hash map中某一个位置的Key以及Value,参见Java官方文档,代码如下:

for (Map.Entry<K, V> entry : map.entrySet()) {
  result[entry.getKey()] = entry.getValue();
}

另一种只能遍历Key,如果要获取Value就再使用一次map的get方法,代码如下:

for (K key : map.keySet()) {
  result[key] = map.get(key);
}

第二种方法没有用到Map.Entry<K, V>,没法同时取到Key和Value,效率偏低(因为还要再使用一次map的get方法嘛)。

可能(已经)遇到的BUG有?

无。