Page 38 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 38

38 |  Java’da Fonksiyonel Programlama




            public class Main {
                  public static void main(String args[]) {
                         List<List<Integer-> integerList = Arrays.asList(Arrays.asList(1),
                                Arrays.asList(2), Arrays.asList(3));

                         List<Integer> streamedList = integerList.stream()
                                .flatMap(list -> list.stream())
                                .toList()
                         System.out.println(streamedList);
                  }
            }


           Örneğin, burada liste içindeki liste elemanlarının stream’i kolaylıkla tek bir listeye toplanabilmiştir.




           4.11. Parallel


           Normalde stream tek sıra halinde çalışır. Stream paralel yapıldığında ise mevcut  stream paralel olarak
           aynı anda çalışacak küçük streamlere bölünür. Paralellik dolayısıyla verileri işleme sırası karışabilir. Bu
           sebeple paralel stream kullanılacağı zaman işlem sırasının değişkenliğinin sorun yaratmayacağından
           emin olunması gerekir.

           Aşağıdaki örnekte aynı liste üzerinde önce stream oluşturulup sonradan paralele çevirme ve en
           baştan paralel stream oluşturma şeklinde iki kullanım görülebilir. Burada sadece, her bir stream
           için konsola 1, 2, 3, 4 ve 5’in basılacağından emin olunabilir. Hangi sırayla basılacağı değişkenlik

           gösterecektir. Iki stream’in sırası bile birbirinden farklı olabilir. Örneğin birisi 3, 5, 4, 2, 1 sırasıyla çıktı
           verirken diğeri 3, 2, 4, 1, 5 şeklinde verebilir.




            List<Integer> sayiList = Arrays.asList(1, 2, 3, 4, 5);

            sayiList.parallelStream().forEach(i -> System.out.println(i));
            sayiList.stream().parallel().forEach(i -> System.out.println(i));
   33   34   35   36   37   38   39   40   41   42   43