Java 努力理解对象声明代码
我正在使用散列映射,并且我已经从类型Java 努力理解对象声明代码,java,object,declaration,Java,Object,Declaration,我正在使用散列映射,并且我已经从类型SLLNode声明了一个存储桶数组,该数组包含MapEntry对象: private SLLNode<MapEntry<K, E>>[] buckets; private SLLNode[]bucket; 现在,我不理解构造函数中的代码: buckets = (SLLNode<MapEntry<K, E>>[]) new SLLNode[m]; //where m is int, and it is
SLLNode
声明了一个存储桶数组,该数组包含MapEntry
对象:
private SLLNode<MapEntry<K, E>>[] buckets;
private SLLNode[]bucket;
现在,我不理解构造函数中的代码:
buckets = (SLLNode<MapEntry<K, E>>[]) new SLLNode[m]; //where m is int, and it is
// the size of the array.
bucket=(SLLNode[])新的SLLNode[m]//其中m是int,它是
//数组的大小。
我也不能理解这一点:
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;
公共SLLNode搜索(K targetKey){
int b=散列(targetKey);
对于(SLLNode curr=bucket[b];curr!=null;curr=
货币成功){
if(targetKey.equals(((MapEntry)curr.element.key))
返回货币;
if(targetKey.equals(((MapEntry)curr.element.key))
返回货币;
}
返回null;
确切地说,我无法理解(K targetKey)
如何被转换为(MapEntry)
,并在equals方法中使用它的逻辑
我无法理解(K targetKey)如何转换为(MapEntry)的逻辑
不是的。targetKey
的equals
方法的参数是
((MapEntry<K, E>) curr.element).key
((映射条目)当前元素).key
这将获取curr.element
,将其强制转换为MapEntry
,并提取key
字段。因此,K
对象的equals
方法正在另一个K
对象上调用。bucket=(SLLNode[])新的SLLNode[m]
-这其中哪一部分让您感到困惑?您能指出您不理解的特定语法,或者您可能认为这不起作用的特定原因吗?我不明白为什么(SLLNode[])会在新的SLLNode[m]之前使用。我一直在使用它,但我不知道它到底是什么。通常我声明的对象是:object O=new object(“某物”)