"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java 스트림에서 객체 목록을 선택 항목으로 효율적으로 변환하는 방법은 무엇입니까?

Java 스트림에서 객체 목록을 선택 항목으로 효율적으로 변환하는 방법은 무엇입니까?

2024-11-07에 게시됨
검색:915

How to Efficiently Convert List of Objects to Optional in Java Streams?

Java 8의 Optional 및 Stream::FlatMap으로 간결해지기

Java 8 스트림으로 작업할 때 List을 Optional로 변환 및 첫 번째 Other 값을 효율적으로 추출하는 것은 어려울 수 있습니다. flatMap에는 일반적으로 반환 스트림이 필요하지만 Optional에 대한 stream()이 없으면 문제가 복잡해집니다.

Java 16 솔루션

Java 16에서는 Stream.mapMulti를 도입하여 더 많은 기능을 지원합니다. 간결한 접근 방식:

Optional result = things.stream()
    .map(this::resolve)
    .mapMulti(Optional::ifPresent)
    .findFirst();

Java 9 솔루션

JDK 9는 Optional.stream을 추가하여 작업을 단순화합니다.

Optional result = things.stream()
    .map(this::resolve)
    .flatMap(Optional::stream)
    .findFirst();

Java 8 솔루션

Java 8에서는 다음 접근 방식을 사용할 수 있습니다.

Optional result = things.stream()
    .map(this::resolve)
    .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
    .findFirst();

도우미 함수를 사용하여 Optional을 Stream으로 변환:

static  Stream streamopt(Optional opt) {
    if (opt.isPresent())
        return Stream.of(opt.get());
    else
        return Stream.empty();
}

Optional result = things.stream()
    .flatMap(t -> streamopt(resolve(t)))
    .findFirst();
릴리스 선언문 이 글은 1729667949에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3