One of the key factors that make my current Triple Search Tree difficult to maintain case-insensitive search is that my underlying data structure is a one-to-one mapping. Check out the following test code:
public void testPut() {
System.out.println("put");
Name name0 = new Name("abc");
Name name1 = new Name("abc");
TernarySearchTree<Name> instance = new TernarySearchTree<Name>();
instance.put(name0.toString(), name0);
instance.put(name1.toString(), name1);
assertEquals(2, instance.matchPrefix("a").size());
}
, TSTSearchEngine TernarySearchTree. TSTSearchEngine
(1) TernarySearchTree, UPPER-CASE .
(2) String-To-ArrayList.
, :
TSTSearchEngine<Name> engine = TSTSearchEngine<Name>();
engine.put(name0); // name0 is new Name("Abc");
engine.put(name1); // name0 is new Name("aBc");
(1) name0.toString() UPPER-CASE ( "ABC" ). TernarySearchTree. "ABC" TernarySearchTree.
(2) "ABC" , name0 .
(3) 1.toString() UPPER-CASE ( "ABC" ). TernarySearchTree. S1 TernarySearchTree.
(4) "ABC" , 1 .
engine.searchAll("a");
(1) TernarySearchTree "ABC" .
(2) "ABC" . , name0 name1.
. TSTSearchEngine
, . , ++ ++ . , , ++ Java.