backend/Java

[Java] Java Iterator를 Java Stream 으로 변환하기

버리야 2018. 9. 7. 09:29
반응형


원문  Java Iterator to Java 8 Stream 을 가볍게 번역한 글입니다.



list 대신 Iterator 객체를 반환하는 다른 라이브러리를 써야할 때가 있는데, 라이브러리의 관점에서는 문제가 없지만 반환된 iterator에서 Java 8 stream을 사용하려는 경우 문제가 될 수 있다.

Iterator를 Iterable로 변환한 다음 쉽게 stream 쓸 수 있는 방법이 있다.


Iterator iterator = elements.iterator();
Iterable valueIterable = () -> iterator;

List StreamSupport.stream(valueIterable.spliterator(), false)
                .map(element -> element.asString())
.collect(Collectors.toList());


Iterator 클래스는 stream으로 사용할 수 없지만 Iterable은 가능하다. 

iterator() 메소드를 오버라이드해서 새로운 Iterable 클래스를 셍상히야 우리가. stream하려는 Iterator를 리턴한다.


아직 stream 가능하지 않은 Iterable이 있는데 이건 StreamSupport 클래스를 사용하여 Iterable을 stream으로 변환해야한다.

반응형