জাভা 8-তে আমাদের ক্লাস স্ট্রিম <T> রয়েছে , যা কৌতূহলীভাবে একটি পদ্ধতি আছে
Iterator<T> iterator()
সুতরাং আপনি আশা করতে পারেন এটি ইন্টারফেস আইটেবল <T> বাস্তবায়িত করবে , যার জন্য ঠিক এই পদ্ধতিটি প্রয়োজন, তবে এটি তেমন নয়।
যখন আমি ফোরচ লুপ ব্যবহার করে কোনও স্ট্রিমের মাধ্যমে পুনরাবৃত্তি করতে চাই, তখন আমাকে এর মতো কিছু করতে হবে
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
প্রত্যাশিত উত্তরাধিকারী এপিআইগুলিতে যাওয়ার জন্য এটি দরকারIterable
getIterable()
থেকেreturn s::iterator;
for (T element : stream::iterator)
, তাই আমি এখনও পছন্দ করতাম যদি স্ট্রিমটিও প্রয়োগ করে Iterable
বা কোনও পদ্ধতি toIterable()
।