Java 8에는 Stream <T> 클래스가 있는데 , 여기에는 흥미롭게 메소드가 있습니다
Iterator<T> iterator()
따라서 Iterable <T> 인터페이스를 구현할 것으로 예상 할 수 있는데,이 메소드는 정확히이 메소드를 필요로하지만 그렇지 않습니다.
foreach 루프를 사용하여 Stream을 반복하려면 다음과 같은 작업을 수행해야합니다
public static Iterable<T> getIterable(Stream<T> s) {
return new Iterable<T> {
@Override
public Iterator<T> iterator() {
return s.iterator();
}
};
}
for (T element : getIterable(s)) { ... }
여기에 뭔가 빠졌습니까?
Stream
예상되는 레거시 API 에 전달 하는 데 필요합니다.Iterable
getIterable()
에return s::iterator;
for (T element : stream::iterator)
Stream이 구현 Iterable
또는 메소드를 선호하는지 여전히 선호합니다 toIterable()
.