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;
}
}
Теперь это не работает, как я ожидал (или, возможно, я использую регулярные выражения неправильно). Если у меня есть следующие ключи в hashmap:
cat, car, chopper
затем позвонивsearchDefinition("c")
или жеsearchDefinition("c*")
я получилnull
.
graph
как нужно тезаурусу? (только из любопытства, так как для этого задания нас просят использовать Java Collection Map).Что-то еще я делаю неуместно в коде выше?Спасибо Дэн
РЕДАКТИРОВАТЬ: я исправил пример. Это не работает, даже если я использую правильный случай.