매칭


스트림 클래스는 최종 처리 단계에서 요소들이 특정 조건에 만족하는지 조사할 수 있도록 세 가지 매칭 메소드를 제공하고 있다. allMatch() 메소드는 모든 쇼소들이 매개값으로 주어진 Predicate 의 조건을 만족하는지 조사하고, anyMatch() 메소드는 최소한 한 개의 쇼소가 매개값으로 주어진 Predicate의 조건을 만족하는지 조사한다. 그리고 noneMatch()는 모든 요소들이 매개값으로 주어진 Predicate의 조건을 만족하지 않는지 조사한다.



리턴 타입 메소드(매개 변수) 제공 인터페이스
boolean allMatch(Predicate<T> predicate)
anyMatch(Predicate<T> predocate)
noneMatch(Predicate<T> predicate)
Stream
boolean allMatch(IntPredicate<T> predicate)
anyMatch(IntPredicate<T> predocate)
noneMatch(IntPredicate<T> predicate)
IntStream
boolean allMatch(LongPredicate<T> predicate)
anyMatch(LongPredicate<T> predocate)
noneMatch(LongPredicate<T> predicate)
LongStream
boolean allMatch(DoublePredicate<T> predicate)
anyMatch(DoublePredicate<T> predocate)
noneMatch(DoublePredicate<T> predicate)
DoubleStream



모든 요소가 2의 배수인지, 하나라도 3의 배수가 존재하는지, 모든 요소가 3의 배수가 아닌지를 조사하는 코드다.


import java.util.Arrays;

public class MatchExample {
  public static void main(String[] args){
    int[] intArr = { 2, 4, 6 };

    boolean result = Arrays.stream(intArr)
      .allMatch(a -> a%2 == 0);
    System.out.println("모두 2의 배수인가? " + result);

    result = Arrays.stream(intArr)
      .anyMatch(a -> a%3 == 0)
    System.out.println("하나라도 3의 배수가 있는가? " + result);

    result = Arrays.stream(intArr)
      .noneMatch(a -> a%3 == 0);
    System.out.println("3의 배수가 없는가? " + result);
  }
}