Recherche avec des caractères génériques dans une Collection de String
J'ai un HashMap<Integer,String>
. J'ai essayé le code suivant à la requête de la Carte et retourner toutes les valeurs possibles
public Collection<String> query(String queryStr) {
List<String> list = new ArrayList<String>();
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
if (queryStr.matches(entry.getKey()))
list.add(entry.getKey());
}
if (list.isEmpty())
return null;
else
return list;
}
Si la carte a "test","best","crest","zest","testy","tether","temper","teat","tempest"
. Une requête de te*t
doit retourner "teat","tempest","test"
. Pour " test* il devrait revenir "test", "bourru". Comment la mettre en œuvre? Est-il un générique recherche de chaîne de caractères? Et je ne peux pas utiliser toutes les bibliothèques externes.
String
a la méthode matches
. Vous pouvez également utiliser Pattern
et Matcher
classes.Pourquoi retourner la valeur null si la liste est vide? Il serait plus logique de simplement renvoyer une liste vide.
Un test de assertArrayEquals(new Object[] {"meilleur","crête","tempête","test","zeste"}, getSortedArray(dict.query("*est"))); n'est pas de retourner quoi que ce soit.
Sa à l'exigence du cas de test. Je ne peut pas les modifier.
OriginalL'auteur NEO | 2013-10-01
Vous devez vous connecter pour publier un commentaire.
Le programme Complet
OriginalL'auteur Prabhakaran
Le comparateur de
\w*
recherches pour la suite de caractères seulement :[a-zA-Z_0-9]
Si vous souhaitez rechercher tous les caractères à l'aide du
*
matcher alors vous devriez essayer ceci:OriginalL'auteur Stefan Finkenzeller