본문으로 바로가기
COMMUNITY모든 이야기

Java Stream API의 findFirst() 호출 시 Optional.empty() 반환 문제

빗방울 2026.10.30 10:59 2분 읽기 조회 6

토이 프로젝트에서 사용자 리스트 중 특정 ID를 가진 사용자를 필터링하여 조회하려 합니다.

코드:

import java.util.*;
import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(
            new User(1L, "User1"),
            new User(2L, "User2")
        );

        Long targetId = 3L;
        Optional<User> result = users.stream()
            .filter(u -> u.getId().equals(targetId))
            .findFirst();

        System.out.println("Result: " + result.isPresent());
    }
}

class User {
    private Long id;
    private String name;
    public User(Long id, String name) { this.id = id; this.name = name; }
    public Long getId() { return id; }
}

오류: Result: false

시도: filter 내부의 equals 비교 로직 확인 및 targetId 값의 타입 일치 여부 검토.

질문: 조건에 맞는 요소가 없을 때 findFirst()가 예외를 던지지 않고 Optional.empty()를 반환하는 것이 정상 동작인지, 혹은 스트림 파이프라인 구성상의 설정 누락이 있는지 확인 부탁드립니다.

모든 이야기1478

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1478개의 이야기
댓글