Java Stream API: Filtreleme, Haritalama (Map) ve Sıralama İşlemleri

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Java Stream API, Java 8 ile hayatımıza giren ve koleksiyonlar (List, Set, Map vb.) üzerinde deklaratif (ne yapılacağını söyleyen) bir şekilde işlem yapmamızı sağlayan devrim niteliğinde bir özelliktir. Geleneksel for döngüleri yerine, veriyi bir boru hattından (pipeline) geçirir gibi filtreleyebilir, dönüştürebilir ve sonuçlandırabiliriz.

İşte Java Stream dünyasının temel taşları:

Java Stream API: Veri İşleme Boru Hattı



1. Stream Mantığı: Kaynak, Ara İşlem ve Terminal​


Bir Stream işlemi üç aşamadan oluşur:

Kaynak (Source): Verinin geldiği yer (Örn: liste.stream()).

Ara İşlemler (Intermediate Operations): Veriyi dönüştüren veya süzen işlemler. (Lazy çalışırlar, terminal işlemi gelene kadar icra edilmezler).

Terminal İşlemi (Terminal Operation): Akışı sonlandırıp sonucu üreten işlem (Örn: collect(), forEach()).

2. Temel İşlemler: Filter, Map ve Sorted​


A. Filtreleme (filter)​

Belirli bir koşula uyan elemanları seçmek için kullanılır. İçine bir Predicate (boolean dönen ifade) alır.

Java:
List<String> isimler = Arrays.asList("Ahmet", "Ayşe", "Mehmet", "Ali", "Can");

List<String> aIleBaslayanlar = isimler.stream()
.filter(s -> s.startsWith("A")) // Koşul: A ile başlasın
.collect(Collectors.toList());

// Sonuç: [Ahmet, Ayşe, Ali]

B. Haritalama (map)​

Her bir elemanı başka bir forma dönüştürmek için kullanılır. Örneğin, bir nesne listesinden sadece isimleri çekmek veya sayıların karesini almak gibi.

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

List<Integer> kareler = sayilar.stream()
.map(n -> n * n) // Her sayının karesini al
.collect(Collectors.toList());

// Sonuç: [1, 4, 9, 16, 25]

C. Sıralama (sorted)​

Elemanları doğal sıralamasına veya sizin belirlediğiniz bir Comparator'a göre dizer.

Java:
List<String> siraliIsimler = isimler.stream()
.sorted() // Alfabetik sırala
.collect(Collectors.toList());

3. Örnek: Hepsini Birleştirelim​


Diyelim ki elimizde bir Personel listesi var. Maaşı 20.000 TL'den fazla olanların isimlerini büyük harfle ve alfabetik sırada getirmek istiyoruz:

Java:
List<String> sonuc = personeller.stream()
.filter(p -> p.getMaas() > 20000)      // 1. Filtrele
.map(p -> p.getIsim().toUpperCase())   // 2. Dönüştür (Büyük Harf)
.sorted()                              // 3. Sırala
.limit(5)                              // 4. İlk 5'i al
.collect(Collectors.toList());         // 5. Listeye dök

4. Ara ve Terminal İşlemler Tablosu​


Ara İşlemler (Lazy)Terminal İşlemler (Eager)
filter()collect() (Listeye/Set'e çevirir)
map()forEach() (Her eleman için işlem yap)
distinct() (Tekrarları sil)count() (Eleman sayısını dön)
limit() / skip()anyMatch() / allMatch()
sorted()reduce() (Tek bir değere indirge)

5. Stream Kullanmanın Avantajları​


Okunabilirlik: Kod, ne yapıldığını anlatan bir İngilizce metin gibi okunur.

Daha Az Kod: 10 satırlık for ve if blokları 2-3 satıra iner.

Paralel İşleme: Sadece .stream() yerine .parallelStream() yazarak çok çekirdekli işlemcilerin gücünden faydalanabilirsiniz.



Sonuç

Stream API, modern Java geliştiriciliğinin vazgeçilmezidir. Veri yığınlarını yönetmek, raporlar oluşturmak ve karmaşık filtreleme mantıklarını temiz bir şekilde yazmak için en güçlü silahınızdır. Ancak unutmayın; Stream bir veri yapısı değildir, veriyi bir yerden alıp bir yere taşıyan bir akıştır.
 
Geri
Üst