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.

Как мне сделать эту работу, как ожидалось?Есть ли лучшая структура данных, чем HashMap, чтобы сохранитьgraph как нужно тезаурусу? (только из любопытства, так как для этого задания нас просят использовать Java Collection Map).Что-то еще я делаю неуместно в коде выше?

Спасибо Дэн

РЕДАКТИРОВАТЬ: я исправил пример. Это не работает, даже если я использую правильный случай.

Ответы на вопрос(6)

Ваш ответ на вопрос