我正在使用哈希地图,并且我从类型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方法中使用。
我无法理解(k targetKey)如何翻译为(mapentry)
不是。targetKey
的equals
方法的参数是
((MapEntry<K, E>) curr.element).key
这需要curr.element
,将其施放到MapEntry<K, E>
,然后提取key
字段。因此,在另一个K
对象上调用K
对象的equals
方法。