ใน Java 8 เรามีคลาส Stream <T>ซึ่งมีวิธีการอยากรู้อยากเห็น
Iterator<T> iterator()
ดังนั้นคุณคาดหวังว่าจะใช้อินเตอร์เฟสIterable <T>ซึ่งต้องการวิธีการนี้อย่างแน่นอน แต่นั่นไม่ใช่กรณี
เมื่อฉันต้องการวนซ้ำสตรีมโดยใช้ลูป foreach ฉันต้องทำอะไรเช่นนี้
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)
ดังนั้นฉันยังคงชอบถ้ากระแสก็จะดำเนินการหรือวิธีการIterable
toIterable()