2012-11-16 39 views
0

我正在嘗試編寫一個Java程序,該程序使用哈希處理以下問題。給定一個自然語言文本,用文本中每個單詞的出現次數生成不同單詞的列表。在程序中插入適當的計數器,以比較散列的經驗效率與相應的理論結果。如何實現以下散列

我明白散列表和散列表的基本原理,但我不知道如何將它實現到計算機程序中。我的教科書沒有提供任何示例,我的教授從未在我的課堂上講過任何具體的例子。

我相信程序應該首先掃描文件中的文本,但我不知道該去哪裏去。

謝謝你的幫助。

+0

這是我用Java編寫的一個HashTable類。它可能有幫助。 https://github.com/JohnKurlak/HashTable/blob/master/HashTable.java。只需在空格處分開文字即可獲得單詞。如果當前單詞在哈希表中,請增加計數。如果當前單詞不在散列表中,請將該單元的計數設置爲0。 –

+0

'java.util.Hashtable'和你的一個有什麼區別? –

回答

0

這聽起來像你只需要研究哈希。散列通常需要一系列值並將它們映射到一個較小的範圍內。因此,一個簡單的散列函數可能是:

public int hash(int value) 
{ 
    assert value >= 0 && value < 1000; 
    return value % 10; 
} 

所以我的哈希函數需要從範圍(0〜999)號,並將它們映射到(0〜9)。一個好的散列函數會將值平均分配到結果範圍內。

您的目標是將每個單詞映射到您的哈希表中的某個索引,這不會像我的示例那樣直截了當。你將不得不做一些散列字符串的研究。

祝你好運!

1

下面是我的解釋,你的任務是關於什麼。

您應該簡單地將文件拆分爲單詞並將其插入到HashMap<String,Integer>(或帶有哈希表實現的映射)中。你也應該計時插入,隨機檢索,甚至可以在地圖上進行會員測試。

然後,您將針對不同文件(不同大小)重複相同操作,並驗證所花費的時間是否與理論結果相符。