java搜索框不区分大小写_java-不区分大小写的三元搜索树

使我当前的三进制搜索树难以支持不区分大小写的搜索的关键因素之一是,我的底层数据结构是一对一映射.请看下面的测试代码:

public void testPut() {

System.out.println("put");

Name name0 = new Name("abc");

Name name1 = new Name("abc");

TernarySearchTree instance = new TernarySearchTree();

instance.put(name0.toString(), name0);

instance.put(name1.toString(), name1);

assertEquals(2, instance.matchPrefix("a").size()); // fail here. Result is 1

}

我当前的短期解决方案是,我正在使用TSTSearchEngine来包装整个TernarySearchTree. TSTSearchEngine包含

(1)TernarySearchTree,提供要映射的大写键.

(2)String-To-ArrayList映射.

这是我表演时发生的事情:

TSTSearchEngine engine = TSTSearchEngine();

engine.put(name0); // name0 is new Name("Abc");

engine.put(name1); // name0 is new Name("aBc");

(1)name0.toString()将被转换为大写(“ ABC”).它将插入到TernarySearchTree中.对于TernarySearchTree,“ ABC”既是键又是值.

(2)“ ABC”将用作映射的键??,以将name0插入到数组列表中.

(3)name1.toString()将被转换为大写(“ ABC”).它将插入到TernarySearchTree中. S1将是TernarySearchTree的键和值.

(4)“ ABC”将用作映射的键??,以将name1插入到数组列表中.

当我尝试

engine.searchAll("a");

(1)TernarySearchTree将返回“ ABC”.

(2)“ ABC”将用作访问地图的密钥. Map将返回一个数组列表,其中包含name0和name1.

但是,这可能不是一个有效的解决方案,因为它需要两次搜索.我发现C C++ Implementation of Case Insensitive Ternary Search Tree中有一个实现.因此,有机会将C代码移植到Java上.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值