developer tip

옵션을 변환하는 방법

optionbox 2020. 12. 6. 21:28
반응형

옵션을 변환하는 방법 스트림으로?


스트림 앞에 옵션을 추가하고 싶습니다. Stream.concat스트림 만 연결할 수 있기 때문에이 질문이 있습니다.

Optional <T>를 Stream <T>로 어떻게 변환합니까?

예:

Optional<String> optional = Optional.of("Hello");
Stream<String> texts = optional.stream(); // not working

Java-9에서 누락 된 stream()메소드가 추가되었으므로 다음 코드가 작동합니다.

Stream<String> texts = optional.stream();

JDK-8050820을 참조하십시오 . 여기에서 Java-9를 다운로드 하십시오 .


Java 8에서는 다음을 수행 할 수 있습니다.

Stream<String> texts = optional.map(Stream::of).orElseGet(Stream::empty);

넌 할 수있어:

Stream<String> texts = optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();

Java 9를 사용하지 않는 경우 GuavaStreams.stream(optional)방법을 추천 할 수 있습니다 . 간단한 예 :

Streams.stream(Optional.of("Hello"))

정적 가져 오기도 가능 Streams.stream하므로 다음과 같이 작성할 수 있습니다.

stream(Optional.of("Hello"))

이전 버전의 Java (Android)를 사용 중이고 aNNiMON Lightweight Stream API를 사용중인 경우 다음과 같은 작업을 수행 할 수 있습니다.

    final List<String> flintstones = new ArrayList<String>(){{
        add("Fred");
        add("Wilma");
        add("Pebbles");
    }};

    final List<String> another = Optional.ofNullable(flintstones)
            .map(Stream::of)
            .orElseGet(Stream::empty)
            .toList();

이 예제는 목록의 복사본을 만듭니다.


내 전직 동료 중 한 명의 멋진 라이브러리는 Streamify입니다. 많은 수집가들이 실제로 모든 것에서 스트림을 생성합니다.

https://github.com/sourcy/streamify

streamify에서 옵션으로 스트림을 생성합니다.

Streamify.stream(optional)

참고 URL : https://stackoverflow.com/questions/33942614/how-to-convert-an-optionalt-into-a-streamt

반응형