import java.util.*;
class HashingDemo {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Please input the size of the hash table: ");
int tableSize = keyboard.nextInt();
LinkedListN[] hashTable = new LinkedListN[tableSize];
// this works
LinkedListN list = new LinkedListN();
list.addToEnd(50);
System.out.println(list);
//
System.out.print("Enter the number of keys to be hashed: ");
int numberOfKeys = keyboard.nextInt();
Random randomGenerator = new Random();
for (int i = 0; i < numberOfKeys; i++) {
int randomNumber = randomGenerator.nextInt(10000) + 1;
int location = randomNumber % tableSize;
hashTable[location].addToEnd(randomNumber);
}
}
}
LinkedListN是一個自定義類,(代碼如下)因爲數組不能很好地處理泛型。這爲什麼不工作?
但每次我運行這個程序,我得到以下錯誤時間:
Please input the size of the hash table: 10
[email protected]
Enter the number of keys to be hashed: 20
Exception in thread "main" java.lang.NullPointerException
at HashingDemo.main(HashingDemo.java:30)
即使如我上面評論說,如果我只是有一個LinkedListN和數據添加到它,就沒有問題。這是怎麼回事?我試過並試圖弄清楚,但是我做不到。
或者,您可以檢查'LinkedListN'是否在循環中初始化(延遲初始化),這可以節省大型稀疏表中的內存。 – Jeff
我想我習慣於使用原語,或者如果我使用字符串的對象被自動設置爲「」。謝謝。 –
@Jeff爲什麼要檢查?它絕對不會在其他地方初始化(在此代碼中至少)。 –