我正在使用哈希映射,我已经声明了一个类型为SLLNode
的存储区数组,其中包含MapEntry
个对象:
private SLLNode<MapEntry<K, E>>[] buckets;
现在,我不理解构造函数中的这段代码:
buckets = (SLLNode<MapEntry<K, E>>[]) new SLLNode[m]; //where m is int, and it is
// the size of the array.
我也无法理解这一点:
public SLLNode<MapEntry<K,E>> search(K targetKey) {
int b = hash(targetKey);
for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr =
curr.succ) {
if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
return curr;
if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
return curr;
}
return null;
准确地说,我无法理解(K targetKey)
如何转换为(MapEntry<K,E>)
的逻辑,并且它在equals方法中使用。
答案 0 :(得分:0)
我无法理解(K targetKey)如何转换为(MapEntry)的逻辑
不是。 targetKey
的{{1}}方法的参数是
equals
这需要((MapEntry<K, E>) curr.element).key
,将其转换为curr.element
,然后提取MapEntry<K, E>
字段。因此,key
对象的equals
方法正在另一个K
对象上调用。