Переопределяющий метод HashSet Contains хэш-набора
-
19-09-2019 - |
Вопрос
Кто-нибудь может сказать мне, как я могу переопределить метод HashSet contains (), чтобы использовать совпадение регулярных выражений вместо просто equals()?
Или, если не переопределяющий, как я могу добавить метод для использования шаблона регулярных выражений?По сути, я хочу иметь возможность запускать регулярное выражение для HashSet, содержащего строки, и мне нужно сопоставлять подстроки с помощью regex.
Если мой метод не подходит, пожалуйста, предложите другие.
Спасибо.:)
Решение
Вы могли бы расширить 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