CodeBlanks Logo Icon CodeBlanks

collect toList

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

Main.java
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

Main.java
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

Soru
List<String> longs = names.stream().filter(s -> s.length() > 3).____(Collectors.toList());
Cevap
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.

Orta seviye bölümündeki tüm dersler