2013-08-25 23 views
0

我有一個類的消息是如下:多鍵實例檢索算法

class Message{ 

String entity; 
Boolean isAvailable; 
......... 

//getters and setters 
..... 
..... 
} 

給定一個代碼,我得到前8個字母找出所有留言實例上運行此代碼,其實體匹配或更多,並且'可用'。
這看起來是一個Trie很適合的地方。
但是,考慮到搜索同樣在2個屬性上 - 是否有任何算法給我一個更快的選擇方法?
或者,是否有一個Trie變體可以容納多個鍵?

回答

0

爲什麼不在isAvailable設置爲false時將其從特里刪除?

或者,如果您還需要搜索isAvailable == false,那麼您可以嘗試兩次。這提供了由trie支配的O(n)查找時間,因此它可以像使用trie(它聽起來像是解決您的問題的正確解決方案)一樣快。

值得一提的是,「適應多種鍵」可能不是你要找的內容,因爲這將涉及到匹配Message匹配,也就是說,entityentity2。這有一點涉及,但是可以通過使用entity上的trie和entity2上的trie來完成,並且在查找得到的結果集合的交集時也產生線性時間解。