anyMatch 메서드
Stream 클래스에서 제공하는 anyMatch() 메서드는 조건식에 따라 Boolean 타입의 값을 반환합니다.
boolean anyMatch(Predicate<? super T> predicate);
anyMatch 메서드 특징
- 단락 종료 오퍼레이션(short-circulting terminal operation)입니다. true를 반환하는 경우 더 이상 anyMatch() 메서드를 호출하지 않습니다.
- 매개변수는 함수형 인터페이스인 Predicate 타입입니다. Predicate 인터페이스는 한 개의 매개변수를 가지며, Boolean 타입의 값을 반환하는 작업을 수행하기 위해 사용됩니다.
- 스트림이 비어 있는 경우 false를 반환합니다.
예제 1. Integer 타입의 List
다음 예제는 Integer 타입의 List에서 30보다 큰 값이 하나라도 있는지 Stream 클래스의 anyMatch() 메서드로 확인합니다.
public static void main(String args[]) {
List<Integer> intList = new ArrayList<>(Arrays.asList(10, 20, 30, 40, 50));
Boolean isThirty = intList.stream().anyMatch(num -> num > 30);
System.out.println("30보다 큰 요소가 존재하는가? " + isThirty);
}
[실행 결과]
30보다 큰 요소가 존재하는가? true
예제 2. anyMatch 메서드 동작 확인
다음 예제는 첫 번째 예제와 동일합니다. anyMatch() 메서드의 동작 과정을 확인하기 위해 람다 표현식에 스트림 요소의 값을 콘솔에 출력하는 소스 코드를 추가합니다.
public static void main(String args[]) {
List<Integer> intList = new ArrayList<>(Arrays.asList(10, 20, 30, 40, 50));
Boolean isThirty = intList.stream().anyMatch(num -> {
System.out.println("현재 요소는? " + num);
return num > 30;
});
System.out.println("30보다 큰 요소가 존재하는가? " + isThirty);
}
[실행 결과]
현재 요소는? 10
현재 요소는? 20
현재 요소는? 30
현재 요소는? 40
30보다 큰 요소가 존재하는가? true
조건을 만족하는 요소가 단 하나라도 존재하는 경우 anyMatch() 메서드는 true를 반환하고 더 이상 실행되지 않는 것을 확인할 수 있습니다.
예제 3. 문자열의 첫 번째 문자가 대문자인지 확인
다음 예제는 String 타입의 List에서 문자열의 첫 번째 문자가 대문자인지 확인하기 위해 Stream 클래스의 anyMatch() 메서드와 Character 클래스의 isUpperCase() 메서드를 사용합니다.
anyMatch() 메서드가 실행되면서 Character.isUpperCase() 메서드가 호출됩니다.
public static void main(String args[]) {
List<String> strList = new ArrayList<>(Arrays.asList("abc", "Abc"));
Boolean isUpper = strList.stream()
.anyMatch(strValue -> Character.isUpperCase(strValue.charAt(0)));
System.out.println("첫 글자가 대문자인 문자열이 존재하는가? " + isUpper);
}
[실행 결과]
첫 글자가 대문자인 문자열이 존재하는가? true
반응형
'Java > 스트림(Stream)' 카테고리의 다른 글
[Java]Stream 중복 제거하는 방법 - distinct 메서드 (0) | 2022.08.26 |
---|---|
[Java]anyMatch, allMatch, noneMatch 메서드 정리 (0) | 2022.08.26 |
[Java]Stream 특정 조건을 만족하는지 확인하는 방법 - noneMatch 메서드 (0) | 2022.08.25 |
[Java]Stream 모든 요소가 조건을 만족하는지 확인 - allMatch 메서드 (0) | 2022.08.25 |
[Java]스트림(Stream) 중복 값 찾기 (0) | 2022.04.05 |
댓글