반응형
원문 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으로 변환해야한다.
반응형
'backend > Java' 카테고리의 다른 글
[Java] Java Interface feature 변화의 history - 번역 (0) | 2019.07.17 |
---|---|
throw new UnsupportedOperationException() (4) | 2009.10.30 |
[Effective Java] 23. 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. (0) | 2009.10.30 |
[Effective Java] 19. 타입을 정의할 때만 인터페이스를 사용하자. (2) | 2009.10.27 |
[Effective Java] 15. 가변성을 최소화하자. (2) | 2009.10.19 |
[Effective Java] 11. clone 메소드는 신중하게 오버라이드 하자. (2) | 2009.10.15 |
[Effective Java] 9. equals 메소드를 오버라이드 할 땐 hashCode 메소드도 항상 오버라이드 하자. (0) | 2009.09.28 |
[Effective Java] 8. equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자. (4) | 2009.09.24 |