जावा 8 में, Stream API के iterate() मेथड में सीड और यूनरी ऑपरेटर आर्गुमेंट के रूप में होते हैं। चूंकि स्ट्रीम अनंत हो जाती है, यह डेवलपर को लिमिट, findFirst, findAny आदि का उपयोग करके स्पष्ट समाप्ति शर्तें जोड़ने के लिए मजबूर करती है। जावा 9 में, Stream API के iterate() मेथड में एक नया आर्गुमेंट जोड़ा गया है, एक प्रेडिकेट जो फ्लो को तोड़ने की शर्त लेता है।
सिंटैक्स
staticStream iterate(T seed, Predicate super T> hasNext, UnaryOperator next)
उदाहरण
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.List;
public class StreamIterateMethodTest {
public static void main(String args[]) {
List numbers1 = Stream.iterate(1, i -> i+1) // दो आर्गुमेंट के साथ
.limit(10)
.collect(Collectors.toList());
System.out.println("In Java 8:" + numbers1);
List numbers2 = Stream.iterate(1, i -> i <= 10, i -> i+1) // तीन आर्गुमेंट के साथ
.collect(Collectors.toList());
System.out.println("In Java 9:" + numbers2);
}
}
आउटपुट
In Java 8:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] In Java 9:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]