誰かがHashSetのcontains()メソッドをオーバーライドして、equals()の代わりに正規表現の一致を使用する方法を教えてもらえますか?
または、オーバーライドしない場合、正規表現パターンを使用するメソッドを追加するにはどうすればよいですか?基本的に、文字列を含むHashSetで正規表現を実行できるようにしたいので、正規表現を使用して部分文字列を照合する必要があります。
私の方法が適切でない場合は、他の人に提案してください。
ありがとうございました。:)
誰かが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
。コレクションをサブクラス化するよりもはるかに簡単です。