[Java] Stream.of().anyMatch(Objects::isNull) 을 사용해서 null 체크 코드를 만들어보았습니다. 🐯

Blair·2024년 10월 9일
0

Java

목록 보기
3/4
post-thumbnail

Java Stream을 사용해서 좀 더 깔끔하게 null 체크하기!
시작합니다! 🐯


Stream.of().anyMatch(Objects::isNull)는 Java의 Stream API와 Objects 클래스의 유틸리티 메서드를 조합해 스트림 내에 null 값이 있는지 확인할 때 사용하는 코드이다. 이 구문을 자세히 분석하면 아래와 같은 요소들로 구성된다.

1. Stream.of()

Stream.of()는 Java 8에서 추가된 Stream API의 메서드로, 지정된 요소들로 스트림(Stream)을 생성한다. 스트림은 데이터를 처리하는데 있어 선언적이고 함수형 스타일을 사용할 수 있도록 도와주는 클래스이다. Stream.of()는 가변인자(varargs)를 받기 때문에 여러 개의 요소를 전달할 수 있다.

예시:

Stream<String> stream = Stream.of("A", "B", "C");

여기서 "A", "B", "C"는 스트림에 포함된 요소들이다.

2. Objects::isNull

Objects::isNull은 Java의 Objects 유틸리티 클래스에 있는 정적 메서드로, 입력된 객체가 null인지 확인하는 메서드이다. 이는 object == null과 동일한 역할을 한다.

boolean result = Objects.isNull(someObject);  // true if someObject is null

3. anyMatch()

anyMatch()Stream API에서 제공하는 메서드로, 스트림의 요소 중 하나라도 주어진 조건(predicate)을 만족하면 true를 반환한다. 모든 요소를 확인하지 않고, 조건에 맞는 첫 번째 요소를 찾으면 탐색을 중단하고 true를 반환한다.

예시:

boolean hasEven = Stream.of(1, 2, 3).anyMatch(n -> n % 2 == 0);  // true

위 코드에서 스트림에 있는 숫자 중 하나라도 짝수면 true를 반환한다.

4. 결합: Stream.of().anyMatch(Objects::isNull)

이제 이 코드의 전체 의미를 보면, Stream.of()로 생성된 스트림 내에 null이 있는지 확인하는 과정이다. Objects::isNull은 요소가 null인지 판단하는 기준이 되고, anyMatch()는 해당 조건을 만족하는 요소가 하나라도 있으면 true를 반환한다.

예시:

boolean hasNull = Stream.of("A", null, "C").anyMatch(Objects::isNull);
System.out.println(hasNull);  // true

이 코드는 "A", null, "C"로 구성된 스트림에서 하나라도 null인 값이 있는지를 확인하는 것이다. null 값이 존재하기 때문에 hasNulltrue가 된다.

동작 과정 요약:

  1. Stream.of("A", null, "C"): 스트림에 "A", null, "C" 세 가지 값을 넣는다.
  2. anyMatch(Objects::isNull): 각 요소가 null인지 검사하는데, null이 발견되면 true를 반환하고 스트림 탐색을 종료한다.

5. 실제 사용 예시

이 코드는 다양한 곳에서 유용하게 사용할 수 있다. 예를 들어, 메서드에 전달된 여러 매개변수나 리스트에 null 값이 있는지 빠르게 확인할 수 있다.

예시 1: 메서드 매개변수 확인

public void processData(String a, String b, String c) {
    if (Stream.of(a, b, c).anyMatch(Objects::isNull)) {
        throw new IllegalArgumentException("One or more arguments are null");
    }
    // 처리 로직
}

여기서는 메서드로 전달된 a, b, c 중 하나라도 null이면 예외를 던진다.

예시 2: 리스트에 null 값이 있는지 확인

List<String> list = Arrays.asList("apple", null, "banana");
boolean containsNull = list.stream().anyMatch(Objects::isNull);

System.out.println(containsNull);  // true

리스트에서 null 값을 찾을 때도 anyMatchObjects::isNull을 사용할 수 있다.

결론

Stream.of().anyMatch(Objects::isNull)는 스트림에서 null 값을 빠르게 찾는 데 유용한 구문이다. Stream.of()로 스트림을 만들고, anyMatch()를 사용해 Objects::isNull을 기준으로 null 여부를 검사한다. 이 방식은 코드의 간결성과 가독성을 높이며, 특히 데이터 유효성 검사나 필드 검증에서 자주 사용될 수 있다.

profile
Active 🙌 Curious 🤔 Energetic 💪

0개의 댓글