Middle
Java'nın yeni sürümünde akışlar ne için kullanılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java 8+ ile akışlar, veri dizilerinin deklaratif işlenmesi için kullanılır. Koleksiyonlar (listeler, kümeler), diziler veya diğer veri kaynakları üzerinde fonksiyonel işlemler yapmaya olanak tanır ve bu işlemler boru hattı tarzında gerçekleştirilir.
Akışların kullanmanın temel avantajları:
- Deklaratif stil: "Ne" yapılması gerektiğini, "nasıl" yapılacağını değil, tanımlamanıza olanak tanır. Bu, kodu daha okunabilir ve anlaşılır kılar.
- Tembel hesaplamalar: İşlemler yalnızca gerektiğinde işlenir, bu da özellikle büyük veri hacimleriyle çalışırken performansı artırabilir.
- Paralel işleme: Akışlar kolayca paralelleştirilebilir (
parallelStream()kullanılarak), bu da çok çekirdekli işlemcilerin etkin kullanımını sağlar. - Şablon kod miktarını azaltma: Geleneksel döngüleri ve yineleyicileri daha ifadeli ve kompakt yapılarla değiştirir.
- Değişmezlik: Akışlar, orijinal veri kaynağını değiştirmez.
Yaygın akış işlemlerine örnekler:
- Filtreleme:
filter()- koşula göre öğeleri seçme. - Dönüşüm (haritalama):
map()- her öğeyi dönüştürme. - Sıralama:
sorted()- öğeleri sıralama. - Benzersiz öğeler:
distinct()- tekrarları kaldırma. - Gruplama:
collect(Collectors.groupingBy(...))- öğeleri özelliklerine göre gruplama. - İstatistikler/Aggregation:
count(),sum(),average(),max(),min(),reduce()- toplu işlemler. - Sonuçları koleksiyona toplama:
collect(Collectors.toList()),collect(Collectors.toSet())- sonuçları koleksiyonlara toplama.
Kullanım örneği:
// Akış kullanarak dizi ve liste işlemleri
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream() // Listeden akış oluşturma
.filter(name -> name.startsWith("A")) // "A" ile başlayan isimleri filtrele
.map(String::toUpperCase) // Her ismi büyük harfe dönüştür
.collect(Collectors.toList()); // Sonucu yeni listeye topla
System.out.println(filteredNames); // Çıktı: [ALICE]