Java:在基于正则表达式的HashMap键中搜索?
我正在使用HashMap构建一个同义词库来存储同义词。
我试图根据正则表达式搜索单词:该方法必须将字符串作为参数并返回结果数组。这是我的第一次尝试:
public ArrayList<String> searchDefinition(String regex) {
ArrayList<String> results = new ArrayList<String>();
Pattern p = Pattern.compile(regex);
Set<String> keys = thesaurus.keySet();
Iterator<String> ite = keys.iterator();
while (ite.hasNext()) {
String candidate = ite.next();
Matcher m = p.matcher(candidate);
System.out.println("Attempting to match: " + candidate + " to " + regex);
if (m.matches()) {
System.out.println("it matches");
results.add(candidate);
}
}
if (results.isEmpty()) {
return null;
}
else {
return results;
}
}
现在,这并不像我预期的那样有效(或者也许我错误地使用了正则表达式)。如果我在哈希映射中具有以下键:
cat, car, chopper
然后通过打电话或我得到.searchDefinition("c")
searchDefinition("c*")
null
- 如何按预期进行此操作?
- 有没有比HashMap更好的数据结构来保持同义词库所需的类似内容?(只是好奇,至于这个任务,我们被要求使用Java集合映射)。
graph
- 在上面的代码中,我还在不恰当地做了什么?
谢谢 丹
编辑:我已经纠正了这个例子。即使我使用正确的大小写,它也不起作用。