Java: recherche dans les clés HashMap basées sur regex?

Je suis en train de construire un dictionnaire des synonymes à l'aide d'une table de hachage pour stocker les synonymes.

Je suis en train de rechercher les mots en se basant sur une expression régulière: la méthode devra prendre une chaîne de caractères comme paramètre et retourne un tableau de résultats. Voici mon premier coup de couteau à elle:

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;
    }
}

Maintenant, cela ne fonctionne pas comme je m'attends (ou peut-être que je suis en utilisant des expressions régulières à tort). Si j'ai les clés suivantes dans la table de hachage:

cat, car, chopper

puis en appelant searchDefinition("c") ou searchDefinition("c*") - je obtenir null.

  1. Comment puis-je faire ce travail comme prévu?
  2. Est-il une meilleure structure de données que la table de hachage pour garder un graph comme nécessaire par un thésaurus? (curiosité seulement, comme pour cette mission, vous êtes invités à utiliser de Java Collection de Carte).
  3. Autre chose que je suis en train de faire innapropriately dans le code ci-dessus?

Grâce,
Dan

EDIT: j'ai corrigé l'exemple. Il ne fonctionne pas, même si j'utilise la bonne affaire.

source d'informationauteur Dan