苦苦于理解对象声明代码

时间:2014-01-29 10:23:35

标签: java object declaration

我正在使用哈希映射,我已经声明了一个类型为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方法中使用。

1 个答案:

答案 0 :(得分:0)

  

我无法理解(K targetKey)如何转换为(MapEntry)的逻辑

不是。 targetKey的{​​{1}}方法的参数是

equals

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