2010-01-06 4 views
3

HashSet의 contains() 메서드를 재정 의하여 어떻게 equals() 대신 정규식 일치를 사용할 수 있는지 말할 수 있습니까?HashSet의 재정의 메서드

아니면 재정의하지 않으면 어떻게 정규식 패턴을 사용하는 방법을 추가 할 수 있습니까? 기본적으로 문자열을 포함하는 HashSet에서 정규 표현식을 실행할 수 있기를 원하며 부분 문자열을 정규식을 사용하여 일치시켜야합니다.

내 방법이 적절하지 않은 경우 다른 사람을 제안하십시오.

감사합니다. :)

답변

5

당신은 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"); 
} 
+0

HashSet을 확장하는 방법에 대한 전체 코드를 제공 한 다음 확장 클래스에서 HashSet을 초기화 할 수 있습니까? –

+0

예제를 추가했습니다. – tangens

+0

고마워요! : D –

2

내가 Google Collections하고, 특히 Sets.filter 방법을 사용하는 것이 좋습니다 것입니다. 컬렉션을 서브 클래스로 만들려고하는 것보다 훨씬 쉽습니다.

관련 문제