Redéfinition Contient de HashSet Méthode
-
19-09-2019 - |
Question
Quelqu'un pourrait me dire comment je peux passer outre la méthode HashSet contient de () d'utiliser un match de regex au lieu d'égal à ()?
Ou sinon majeur, comment je peux ajouter une méthode à utiliser un modèle de regex? Au fond, je veux être en mesure d'exécuter regex sur un HashSet contenant des chaînes, et je dois correspondre à des sous-chaînes utilisant l'expression rationnelle.
Si ma méthode ne convient pas, s'il vous plaît suggérer d'autres.
Merci. :)
La solution
Vous pouvez étendre un HashSet de la manière suivante:
public class RegExHashSet extends HashSet<String > {
public boolean containsRegEx( String regex ) {
for( String string : this ) {
if( string.matches( regex ) ) {
return true;
}
}
return false;
}
}
Ensuite, vous pouvez l'utiliser:
RegExHashSet set = new RegExHashSet();
set.add( "hello" );
set.add( "my" );
set.add( "name" );
set.add( "is" );
set.add( "tangens" );
if( set.containsRegEx( "tan.*" ) ) {
System.out.println( "it works" );
}
Autres conseils
Je suggère d'utiliser Google Collections , et en particulier, le méthode Sets.filter
. Beaucoup plus facile que d'essayer de sous-classe d'une collection.