Trong Java 8, chúng ta có lớp Stream <T> , có một phương thức tò mò
Iterator<T> iterator()
Vì vậy, bạn sẽ mong đợi nó triển khai giao diện Iterable <T> , yêu cầu chính xác phương pháp này, nhưng thực tế không phải vậy.
Khi tôi muốn lặp lại một luồng bằng vòng lặp foreach, tôi phải làm một cái gì đó như
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)) { ... }
Am i thiếu cái gì ở đây?
Stream
đến các API kế thừa mong đợiIterable
getIterable()
đểreturn s::iterator;
for (T element : stream::iterator)
, vì vậy tôi vẫn thích nếu Stream cũng sẽ thực hiện Iterable
hoặc một phương thức toIterable()
.