質問

HashSet の contains() メソッドをオーバーライドして、equals() だけでなく正規表現一致を使用する方法を誰か教えてください。

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

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

ありがとう。:)

役に立ちましたか?

解決

あなたは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" );
}

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top