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. :)

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top