Stream bir interface’dir. Bu yüzden doğrudan nesnesi oluşturulamaz. Stream java.util.stream paketi altında yer almaktadır.
Stream Oluşturma Yöntemleri
Empty Stream
Stream<Integer> emptyStream = Stream.empty();
Source’u empty olan bir stream döndürür. Stream return eden bir fonkisyon yazıyorsak null return etmek yerine empty Stream döndürebiliriz.
Collection Üzerinden Stream Oluşturma
List<String>liste = new ArrayList<>(); liste.stream(); Stack stack = new Stack(); stack.stream(); Queue<String> queue = new LinkedList<>(); queue.stream();
Collection interface’inde tanımlı olan stream() metodu bütün implementasyonlarında mevcuttur bu yüzden stream() metodunu çağırmamız yeterlidir.
Array Üzerinden Stream Oluşturma
String[] arr = new String[]{"a", "b", "c"}; Stream<String> streamOfArrayFull = Arrays.stream(arr); Stream<String> streamOfArray = Stream.of("a", "b", "c");
Array üzerinden Stream oluşturmak için Arrays.stream() methodu kullanılabilir, gönderilen argümanları içeren bir stream nesnesi oluşturmaktadır. Stream.of ise bu işleme daha kısa bir çözüm sunar.
Stream Builder Kullanarak Stream Oluşturma
Stream<String> streamBuilder = Stream.<String>builder().add("a").add("b").add("c").build();
Bu yapı yine Array üzerinden stream oluşturma yöntemine benzer, Builder pattern kullanarak Stream oluşturulmasını sağlamaktadır.
Stream Generate Kullanarak Stream Oluşturma
Stream<String> streamGenerated = Stream.generate(() -> "element").limit(10); final Random random = new Random(); Stream<Integer> randomNumbers = Stream.generate(()->random.nextInt()).limit(10);
Stream içerisinde yer alan generate metodu ile, elemanların belirli bir kurala göre oluşmasını belirterek Stream oluşturabiliriz burada limitlemezsek sonsuz’a kadar oluşturmaya devam edecektir. Verilen ilk örnekte içerisinde element yazan 10 tane string yer alacaktır, ikincisinde ise 10 tane rastgele sayı üretecektir.
Stream Iterate Kullanarak Stream Oluşturma
Stream<Integer> streamIterated = Stream.iterate(40, n -> n + 2).limit(20);
Stream Iterate metotu Generate metotu ile benzerlik gösterir farkı ise ilk değeri parametre olarak alması, diğer değerlerin hesaplanmasında bir algoritmaya ihtiyaç duymasıdır.
Kaynak: