我有一個程序,它讀取文檔並搜索給定搜索詞的每個頁面。然後,它返回一個頁面的單詞出現在用於在文本中搜索單詞的最有效的數據結構Java
即「豔」字出現在以下網頁:1,4,6,8
在我的文件分割成頁的時刻,這個存儲到一個ArrayList。 ArrayList的每個元素都包含文檔的一個頁面
然後,我將頁面上的每個單詞分割並存儲到一個hashMap中,KEY是文本中該單詞出現的位置(我需要知道這一點爲其他功能)和價值是單詞。然後我使用HashMap進行搜索;
if (map.containsValue(searchString) == true)
return true;
else
return false;
我對每個頁面都這樣做。
一切正常,但我想知道是否有一個更有效的數據結構,我可以使用它存儲在給定的頁面上的所有單詞以及它出現在頁面上的位置?(因爲搜索中的值沒有給出密鑰的映射是0(n))。
我需要能夠搜索這個結構並找到一個單詞。記住我也需要這個位置供以後使用。
我用來填充地圖的文字中的單詞的位置的代碼是;
// text is the page of text from a document as a string
int key = 1; // position of the word in the text
for (String element : text.split(" "))
{
map.put(key, element);
key++;
}
感謝您的答覆,你是說在店裏用字符爲每個頁面上的文本和設置作爲頁碼一個HashMap中的文件? –
Steve
該字符串將是單個單詞,整數集將包含該單詞出現的頁碼(我試圖在答案文本中澄清此問題) –
但爲了計算頁碼,單詞出現在我需要使用類似的算法,在我原來的文章中,這將需要0(n)。我希望避免這種情況,並儘可能使用效率更高的產品 – Steve