Переопределяющий метод HashSet Contains хэш-набора

StackOverflow https://stackoverflow.com/questions/2015374

  •  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 способ.Намного проще, чем пытаться создать подкласс коллекции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top