努力理解对象声明代码



我正在使用哈希地图,并且我从类型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)

不是。targetKeyequals方法的参数是

((MapEntry<K, E>) curr.element).key

这需要curr.element,将其施放到MapEntry<K, E>,然后提取key字段。因此,在另一个K对象上调用K对象的equals方法。

最新更新