Giriş
1. generate() metodu elimizde bir Collection, dizi yok iken Stream yaratmak için kullanılır. 2. Bu metod sonsuz bir Stream yarattığı için limit() ile sınırlandırmak gerekir.
Örnek
Elimizde şöyle bir kod olsun.
Şöyle yaparız
Testlerde sahte veri üretmek için şöyle yaparız. Burada limit() ile sınırlama yokElimizde şöyle bir kod olsun.
Stream.generate(() -> {
System.out.println("generating...");
return "hello!";
})
.limit(3)
.forEach(elem -> {
System.out.println(elem);
});
Çıktı olarak şunu alırız.generating...
hello!
generating...
hello!
generating...
hello!
ÖrnekŞöyle yaparız
Stream.generate(() -> Boolean.FALSE).limit(100)
Örnek - Test Amaçlı Kullanımprivate static void streamGenerate(){
Supplier<UUID> supplier = () -> UUID.randomUUID();
Stream<UUID> generate = Stream.generate(supplier);
generate.forEach(a-> System.out.println(a));
}
private static void streamMessage(){
AtomicInteger atomicInteger = new AtomicInteger();
Supplier<Message> supplier = () -> {
Message message = new Message(new Random().nextInt(), "Message : " +
atomicInteger.getAndIncrement());
return message;
};
Stream.generate(supplier)
.forEach(a-> System.out.println("Message Published: " +a.toString()));
}
private static void streamMailId(long size) {
List<String> domain = List.of("@gmail.com", "@Yahoo.com", "@outlook.com");
Supplier<String> supplier = () ->{
String userName = generateUserName();
Random random = new Random();
int index = random.nextInt(domain.size());
return userName+domain.get(index);
};
Stream.generate(supplier).limit(size).forEach(a-> System.out.println(a));
}
Hiç yorum yok:
Yorum Gönder