我一直在使用Ternary Search Tree一段時間,作爲實現自動完成下拉組合框的數據結構。這意味着,當用戶鍵入「FO」,下拉組合框中將顯示大小寫不敏感的三元搜索樹
富 食品 足球
的問題是,我現在的三元搜索樹的使用是區分大小寫的。我的實現如下。它已被現實世界用於大約1 ++年。因此,我認爲這是相當可靠的。
不過,我要尋找一個區分大小寫的三元搜索樹,這意味着,當我輸入「FO」,下拉組合框中會顯示我
富 食品 足球
以下是TST的一些關鍵接口,我希望新的情況下可能會有類似的界面。
/**
* Stores value in the TernarySearchTree. The value may be retrieved using key.
* @param key A string that indexes the object to be stored.
* @param value The object to be stored in the tree.
*/
public void put(String key, E value) {
getOrCreateNode(key).data = value;
}
/**
* Retrieve the object indexed by key.
* @param key A String index.
* @return Object The object retrieved from the TernarySearchTree.
*/
public E get(String key) {
TSTNode<E> node = getNode(key);
if(node==null) return null;
return node.data;
}
使用示例如下。 TSTSearchEngine使用TernarySearchTree作爲核心主幹。
Example usage of Ternary Search Tree
// There is stock named microsoft and MICROChip inside stocks ArrayList.
TSTSearchEngine<Stock> engine = TSTSearchEngine<Stock>(stocks);
// I wish it would return microsoft and MICROCHIP. Currently, it just return microsoft.
List<Stock> results = engine.searchAll("micro");
不,不能這樣做。想象一下你有原始數據集ABC和aBc。如果您通過將其全部轉換爲大寫來存儲它,您將只有機會檢索ABC。 aBc會在空間中失去。我的願望是什麼,我提供abc,它返回我ABC和aBc – 2009-03-06 09:35:52