Pergunta

Alguém poderia me dizer como eu pode substituir HashSet do método contains () para usar um jogo regex em vez de apenas é igual a ()?

Ou se não substituindo, como posso adicionar um método para usar um padrão de regex? Basicamente, eu quero ser capaz de executar regex em um HashSet contendo cordas, e eu preciso para corresponder substrings usando regex.

Se o meu método não é apropriado, por favor sugerir outros.

Obrigado. :)

Foi útil?

Solução

Você poderia estender um HashSet da seguinte maneira:

public class RegExHashSet extends HashSet<String > {
    public boolean containsRegEx( String regex ) {
        for( String string : this ) {
            if( string.matches( regex ) ) {
                return true;
            }
        }
        return false;
    }
}

Em seguida, você pode usá-lo:

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

Outras dicas

Gostaria de sugerir usando Google Collections e, em particular, a método Sets.filter . Muito mais fácil do que tentar subclasse uma coleção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top