如何在java中的哈希映射中的sql中搜索LIKe运算符

我想根据用户输入搜索哈希映射。 假设用户给出值’A’,我必须以公司名称开头显示,如果用户给出值’AB’,我必须以AB公司名称开头显示。 我将公司名称存储在哈希映射中

  1. 使用NavigableSet 。

    例:

    NavigableSet company=new TreeSet(); Set filteredSet=company.tailSet(prefix); for(String str:filteredSet) { if(str.startsWith(prefix)) //add to list else break; } 
  2. 如果你担心性能,请使用基数树 [wiki]或trie [wiki] 。与基数相比,基数树的内存效率更高。

哈希映射只是非常善于根据一些可以适当散列的相等概念找到完全匹配。

两种选择:

  • 只需改为列表,然后线性搜索。 对于相对少量的数据,这可能非常好。
  • 查找或实现一个trie (或前缀树),它基本上从根节点开始,并为用户键入的每个字符下降 – 结果是在用户输入降序结束时到达的节点下面的所有“有效端点”节点。

您可以遍历键集并检查每个键。 例如:

 final String searchPrefix = "AB"; for(String key : map.keySet()){ if(key.startsWith(searchPrefix)){ System.out.println(map.get(key)); } } 

或者,您可以循环遍历地图中的条目。

 final String searchPrefix = "AB"; for(Entry e : map.entrySet()){ if(e.getKey().startsWith(searchPrefix)){ System.out.println(e.getValue()); } } 

你应该看看正则表达式(正则表达式)

http://download.oracle.com/javase/tutorial/essential/regex/

你的公司名称是字符串然后你可以使用

 String regex = "A*"; myString.matches(regex);