我想根据用户输入搜索哈希映射。假设用户给出值'A',我必须以公司名称开头显示,如果用户给出值'AB',我必须以AB公司名称开头显示。我在哈希映射中存储公司名称
答案 0 :(得分:10)
使用NavigableSet。
示例:强>
NavigableSet<String> company=new TreeSet<String>();
Set<String> filteredSet=company.tailSet(prefix);
for(String str:filteredSet) {
if(str.startsWith(prefix))
//add to list
else
break;
}
如果您担心性能问题,请使用radix tree [wiki]或trie [wiki]。与基数相比,基数树的内存效率更高。
答案 1 :(得分:3)
哈希地图真的很擅长根据一些可以适当散列的相等概念找到完全匹配。
两个选项:
答案 2 :(得分:3)
您可以遍历键集并检查每个键。例如:
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<String,String> e : map.entrySet()){
if(e.getKey().startsWith(searchPrefix)){
System.out.println(e.getValue());
}
}
答案 3 :(得分:0)
你应该看一下正则表达式(正则表达式)
http://download.oracle.com/javase/tutorial/essential/regex/
您的公司名称是字符串然后您可以使用
String regex = "A*";
myString.matches(regex);