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")&nbsp;или жеsearchDefinition("c*")&nbsp;я получилnull.

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

Спасибо Дэн

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