我遇到了(hashTable [bucket] [size] == null)的问题。我想知道如果null不是int类型,你如何检查该槽是否为null。任何想法/提示?
public void add(int n){
int bucket = hashF(n);
int p=0;
int size = hashTable[0].length;
for(int i=0; i>size; i++){
if(hashTable[bucket][size] == null){
hashTable[bucket][size]= n;
break;
}
if(i+1 == size){
bucket++;
i = -1;
}
if(bucket ==10){
bucket = 0;
}
p++;
if(p== hashTable.length*hashTable[0].length){
break;
}
}
for(int i=0; i<BST.length; i++){
if(BST[i] == null){
BST[i] = n;
break;
}
else if(n<BST[i]){
i= 2*i;
}
else{
i = 2*i+1;
}
}
}
答案 0 :(得分:0)
假设hashTable是一个二维的int数组,你无法检查它的一个元素是否为空,因为它永远不会。基元永远不能为空,因为它不是对象引用。它将始终具有值 - 其默认值为0.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
答案 1 :(得分:0)
Java原语(如int
)没有“未分配”值 - 它们总是具有值。
如果要表示“未分配”,请使用“不可能”的大小值,例如在初始化时分配的-1
。然后在hashTable[bucket][size] == -1
的代码测试中确定它是否处于初始状态。