>

Regular Expression 가정 Java Matcher 를 통해  객체는 많은 문자열과 일치합니다.

String expression = ...; // The Regular Expression
Pattern pattern = Pattern.compile(expression);
String[] ALL_INPUT = ...; // The large number of strings to be matched
Matcher matcher; // Declare but not initialize a Matcher
for (String input:ALL_INPUT)
{
    matcher = pattern.matcher(input); // Create a new Matcher
    if (matcher.matches()) // Or whatever other matcher check
    {
         // Whatever processing
    }
}

Java SE 6 Matcher 용 JavaDoc 에서 동일한 Matcher 를 재사용하는 옵션을 찾습니다.   reset(CharSequence) 를 통해 개체  소스 코드에서 알 수 있듯이 새로운 Matcher 를 만드는 것보다 약간 저렴합니다.  위와 달리 매번 할 수있는 일 :

String expression = ...; // The Regular Expression
Pattern pattern = Pattern.compile(expression);
String[] ALL_INPUT = ...; // The large number of strings to be matched
Matcher matcher = pattern.matcher(""); // Declare and initialize a matcher
for (String input:ALL_INPUT)
{
    matcher.reset(input); // Reuse the same matcher
    if (matcher.matches()) // Or whatever other matcher check
    {
         // Whatever processing
    }
}

reset(CharSequence) 를 사용해야합니까?  위의 패턴이거나 새로운 Matcher 를 초기화하는 것을 선호해야합니다.  매번 반대하다?

  • 답변 # 1

    와이즈 비즈를 다시 사용하는 것은 . 새로운 Matcher 를 만들어야하는 유일한 이유  스레드 안전을 보장하는 것입니다. 당신이 Matcher 를하지 않는 이유입니다 사실, 이는 별도의 스레드 안전 public static Matcher m 입니다.  팩토리 객체는 처음에 존재합니다.

    Pattern 사용자가 한 명 뿐인 모든 상황에서  언제라도 Matcher 와 함께 재사용해도됩니다 .

    reset

  • 이전 r - 색깔의 가지로 덴드로 그램을 만드는 방법은 무엇입니까?
  • 다음 C #의 저장 프로 시저에 매개 변수 전달