CodeBlanks Logo Icon CodeBlanks

map

map ile eleman dönüştürmeyi öğrenirsin.

map ile dönüşüm

map(Function) her elemanı yeni bir değere dönüştürür ve yeni bir Stream döndürür. Function<T, R> tek apply(T) metodu olan functional interface'dir; T girdi, R çıktı türüdür.

Örnek: names.stream().map(s -> s.length()) her String'i uzunluğuna dönüştürür; sonuç bir Stream<Integer>'dır. map dönüşümdür; eleman sayısını değiştirmez. Tür değişse bile akış ilerler.

mapToInt ve tür özelleştirme

Map sonucu ilkel türler için mapToInt, mapToLong, mapToDouble kullanılır. Bunlar IntStream, LongStream, DoubleStream döndürür; sum(), average() gibi ilkel işlemlere izin verir.

Örneğin names.stream().mapToInt(s -> s.length()).sum() isim uzunluklarının toplamını verir. Bu, map(s -> s.length()).reduce(0, (a, b) -> a + b)'den daha derli topludur. Optional dönen average() ise .orElse(0.0) ile güvenli okunur.

Uygulama İsim uzunluklarını topla

List<String> names = new ArrayList<>(); tanımla; "Ayşe", "Alex" ekle. int sum = names.stream().mapToInt(s -> s.length()).sum(); ile isim uzunluklarının toplamını hesapla. System.out.println(sum); ile yazdır.

Başlangıç kodu

Main.java
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // List<String> tanımla, iki isim ekle, mapToInt+sum ile uzunlukları topla, yazdır

    }
}

Örnek çözüm

Main.java
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Ayşe");
        names.add("Alex");
        int sum = names.stream().mapToInt(s -> s.length()).sum();
        System.out.println(sum);
    }
}

Beklenen çıktı

8

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 map kavramlarını eşleştir

Kavram Anlamı
map(...) Her elemanı dönüştürür
Function<T, R> Dönüşüm fonksiyonu
apply(T) R türünde sonuç
s -> s.length() Lambda Function

2 map çağrısını tamamla

Soru
names.stream().____(s -> s.length())
Cevap
names.stream().map(s -> s.length())

Açıklama: map metodu Function bekler.

3 names.stream().map(s -> s.length()) ne döndürür?

  • Stream<String>
  • Stream<Integer> Doğru cevap
  • long
  • List<Integer>

Açıklama: map her String'i Integer'a dönüştürür; sonuç Stream<Integer>'dır.

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