Yanıtlar:
İmzalarının nasıl farklı olduğuna dikkat edin:
generate
a alır IntSupplier
, yani hiçbir şey verilmeden ints üretmeniz gerekir. Örnek kullanımlar, aynı tamsayıdan sabit bir akış oluşturmayı, rastgele tamsayılardan bir akış oluşturmayı içerir. Akıştaki her öğenin önceki öğeye nasıl bağlı olmadığına dikkat edin.
iterate
a seed
ve a alır IntUnaryOperator
, yani her öğeyi önceki öğeye göre oluşturmanız gerekir . Bu, örneğin endüktif olarak tanımlanmış bir dizi oluşturmak için kullanışlıdır. Bu durumda, her öğenin bir öncekine bağlı olması gerekir .
IntStream.iterate
Öte yandan sıralıIntStream
bir değer IntStream.generate
döndürür, paralel akış boru hatlarını hızlandırmaya yardımcı olabilecek sırasızIntStream
bir değer döndürür .
IntStream.generate
Javadoc'ta belirtildiği gibi rastgele veya sabit değerler üretmek için tercih edilirse, büyük olasılıkla döndürülen akımın özellikleri için tahmin ediyorum.
Siparişin yanı sıra, kullanım da biraz farklı. Yöntem imzalarına bakalım:
iterate(int seed, IntUnaryOperator f)
generate(IntSupplier s)
Iterate, başlangıç değerini bir önceki değerden sonraki değeri oluşturmak için kullanılan parametre ve tekli operatör olarak açıkça verdi. Burada operatör dahili durum olmadan kolayca değiştirilemez ve herhangi bir sorun olmadan paralel olarak birden fazla yerde yeniden kullanılabilir.
Generate tedarikçi kullanır. Bunlar sabit veya rasgele sayılar sağlayabilir veya (1, 2, 3, ...) gibi seriler sağlamak için dahili duruma sahip olmaları gerekir.