3

誰かがHashSetのcontains()メソッドをオーバーライドして、equals()の代わりに正規表現の一致を使用する方法を教えてもらえますか?

または、オーバーライドしない場合、正規表現パターンを使用するメソッドを追加するにはどうすればよいですか?基本的に、文字列を含むHashSetで正規表現を実行できるようにしたいので、正規表現を使用して部分文字列を照合する必要があります。

私の方法が適切でない場合は、他の人に提案してください。

ありがとうございました。:)

4

2 に答える 2

5

次の方法でHashSetを拡張できます。

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

次に、それを使用できます。

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" );
}
于 2010-01-06T18:55:43.167 に答える
2

Googleコレクション、特にこの方法を使用することをお勧めしますSets.filter。コレクションをサブクラス化するよりもはるかに簡単です。

于 2010-01-06T19:04:46.930 に答える