collect toList
- Java kursu
- Orta seviye
- Ders 110/116
- 5 dk
collect(Collectors.toList()) ile liste toplamayı öğrenirsin.
collect ve Collectors
collect(Collectors.toList()) akıştaki elemanları yeni bir List olarak toplar. Sonuç değiştirilebilir bir List'tir; akış kaynağı etkilenmez. Java 16'dan beri .toList() kısa yolu da vardır; bu değiştirilemez bir List döndürür.
Örnek: List<String> longs = names.stream().filter(s -> s.length() > 3).collect(Collectors.toList());. Collectors.toSet() ile benzersiz elemanlar, Collectors.joining(", ") ile tek bir metin üretilebilir.
toList kısa yolu
Java 16 ile gelen .toList() kısa yolu, collect(Collectors.toList())'in daha kısa halidir. Sonuç değiştirilemez bir List'tir; add ya da remove UnsupportedOperationException fırlatır.
Değiştirilebilir liste gerekirse yine collect(Collectors.toList()) ya da collect(Collectors.toCollection(ArrayList::new)) kullanılır. Kısa yol yalnızca okuma amacıyla yeterliyse tercih edilir; performans açısından da daha iyidir.
Uygulama Uzun isimleri List'e topla
List<String> names = new ArrayList<>(); tanımla; "Ayşe", "Alexander", "Alex" ekle. List<String> longs = names.stream().filter(s -> s.length() > 5).collect(Collectors.toList()); ile beşten uzun isimleri yeni bir List'e topla. System.out.println(longs.size()); ile sonucun boyutunu yazdır.
Başlangıç kodu
import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// List<String> tanımla, 3 isim ekle, filter+collect ile uzunları topla, boyut yazdır
}
}Örnek çözüm
import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Ayşe");
names.add("Alexander");
names.add("Alex");
List<String> longs = names.stream().filter(s -> s.length() > 5).collect(Collectors.toList());
System.out.println(longs.size());
}
}Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 collect çağrısını tamamla
List<String> longs = names.stream().filter(s -> s.length() > 3).____(Collectors.toList());
List<String> longs = names.stream().filter(s -> s.length() > 3).collect(Collectors.toList());
Açıklama: collect terminalı ile akış bir List'e toplanır.
2 Collectors metodlarını eşleştir
| Kavram | Anlamı |
|---|---|
Collectors.toList() |
Liste üretir |
Collectors.toSet() |
Benzersiz küme |
Collectors.joining(", ") |
Metin birleştirir |
Collectors.counting() |
Sayım yapar |
3 stream().toList() ile toplanan List nasıldır?
- Boş
- Değiştirilebilir
- Senkronize
- Değiştirilemez Doğru cevap
Açıklama: .toList() kısa yolu değiştirilemez bir List döndürür.