인생을 코딩하다.

[Java] stream API matching method 본문

Java

[Java] stream API matching method

Hyung1 2020. 10. 18. 01:16
728x90
반응형

stream API는 특정 조건을 만족하는 요소들을 얻을 수 있도록 세가지 매칭 매소드를 제공한다.

 

allMatch() -> 요소들이 매개값으로 주어진 조건에 맞는지 검사

/**
* 이 스트림의 어떤 요소도 제공된 술어와 일치하지 않는지 여부를 반환한다.
* 필요하지 않은 경우 모든 요소에 대한 술어를 평가할 수 없음
* 결과를 결정한다. 스트림이 비어 있으면 {@code true}이(가)
* 반환되고 술어는 평가되지 않는다.
*
* <p>이것은 <a href="package-summary.html#StreamOps"> 단락 회로 입니다.
* 터미널 운영.
*
* @api참고
* 이 방법은 의 보편적 정량화를 평가한다.
* 스트림의 요소에 대한 부정 술어(모든 x ~P(x)) 만약
* 하천은 비어 있으며, 수량화는 빈칸으로 만족한다고 함
* 및 는 항상 {@code true}이며, P(x)에 관계 없이.
*
* @param은 a <a href="package-summary.html#NonInterference">라고 전제한다.
* <a href="package-summary.html#Stateless">무상태.
* 이 스트림의 요소에 적용되는 술어
* @return {@code true} 스트림의 요소가 일치하지 않는 경우
* 제공된 술어 또는 스트림이 비어 있거나, 그렇지 않으면 {@code false}
*/

anyMatch() -> 한 개 이상의 요소가 주어진 조건에 맞는지 검사

/**
* 이 스트림의 모든 요소가 제공된 술어와 일치하는지 여부를 반환한다.
* 필요하지 않은 경우 모든 요소에 대한 술어를 평가할 수 없음
* 결과를 결정한다. 스트림이 비어 있으면 {@code true}이(가)
* 반환되고 술어는 평가되지 않는다.
*
* <p>이것은 <a href="package-summary.html#StreamOps"> 단락 회로 입니다.
* 터미널 운영.
*
* @api참고
* 이 방법은 의 보편적 정량화를 평가한다.
* 스트림의 요소(모든 x(x)에 대해) 위에 술어가 있음. 만약
* 스트림이 비어 있으며, 정량화가 <황금>이라고 한다.
* 만족하며 항상 {@code true}(P(x)에 관계 없음)
*
* @param은 a <a href="package-summary.html#NonInterference">라고 전제한다.
* <a href="package-summary.html#Stateless">무상태.
* 이 스트림의 요소에 적용되는 술어
* @return {@code true} 스트림의 모든 요소가 일치하는 경우
* 제공된 술어 또는 스트림이 비어 있거나, 그렇지 않으면 {@code false}
*/

noneMatch() -> 모든 요소들이 주어진 요소에 맞는지 검사

/**
* {@link 선택 사항 반환이 항목의 첫 번째 요소를 설명하는 Int}
* 스트림 또는 빈 {@code(옵션)스트림이 비어 있는 경우 Int} 만약
* 스트림에는 조우 순서가 없으며, 그러면 모든 요소가 반환될 수 있다.
*
* <p>이것은 <a href="package-summary.html#StreamOps"> 단락 회로 입니다.
* 터미널 운영.
*
* @return a {@code(선택 사항이 스트림의 첫 번째 요소를 설명하는 Int},
* 또는 빈 {@code({@code(옵션))스트림이 비어 있는 경우 Int}
*/

EX)

package ex1.stream;

import java.util.Arrays;

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

        boolean result = Arrays.stream(array)
                .allMatch(a -> a * 2 < 20);
        System.out.println("2의 배수들이 20보다 작나? " + result);

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

        result = Arrays.stream(array)
                .noneMatch(a -> a%6 == 0);
        System.out.println("6의 배수가 없나? " + result);
    }
}
2의 배수들이 20보다 작나? true
3의 배수가 하나라도 있나? true
6의 배수가 없나? false
728x90
반응형
Comments