HashSet の Contains メソッドをオーバーライドする
-
19-09-2019 - |
質問
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
方法。コレクションをサブクラス化するよりもはるかに簡単です。
所属していません StackOverflow