2011-11-02 69 views
28

可能重複:
Where do I find a standard Trie based map implementation in Java?Java中有Trie嗎?

我想在Java中使用的特里,是我可以使用一個實現? (我試圖尋找一個,但我沒有找到它)。

+0

發現http://www.superliminal.com/ http://www.superliminal.com/sources/TrieMap.java.html –

+0

你確定[你搜索了「trie java」on Google](http: //www.google.com/search?q=trie+java&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a)? – m0skit0

回答

37

核心Java庫中沒有trie數據結構。

這可能是因爲嘗試通常設計爲存儲字符串,而Java數據結構更通用,通常持有任何Object(定義相等和散列操作),儘管它們有時僅限於Comparable對象(定義訂單)。 「一系列符號沒有共同的抽象」,儘管CharSequence適用於字符串,我想你可以用Iterable做其他類型的符號。

這裏還有一點需要考慮:當試圖在Java中實現傳統的trie時,您很快就會遇到Java支持Unicode的事實。爲了獲得任何空間效率,您必須將字典中的字符串限制爲符號的某個子集,或者放棄將子節點存儲在由符號索引的數組中的傳統方法。這可能是另一個原因,爲什麼嘗試不被認爲通用目的足以包含在覈心庫中,以及如果您實施自己的或使用第三方庫的時候需要注意的地方。