Nesne Akışlarına ve Nesne Akışlarından Eşleme
mapToObj ve mapToInt
Nesne Akışlarına ve Nesne Akışlarından Eşleme, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
İki Akış Dünyası
Java'da nesne akışları (Stream<T>) ve ilkel tür akışları (IntStream ve benzerleri) bulunur. Eşleme yöntemleri bu akışlar arasında geçiş yapmanızı sağlar.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
System.out.println(IntStream.rangeClosed(1, 3).sum());
}
}mapToObj: İcren Türden Nesneye
mapToObj, her ilkel değeri bir nesneye dönüştürerek bir Stream<T> üretir.
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
List<String> labels = IntStream.rangeClosed(1, 3)
.mapToObj(n -> "item-" + n)
.collect(Collectors.toList());
System.out.println(labels);
}
}mapToInt: Nesneden İlkel Türe
mapToInt, her nesneden bir int çıkarır ve sayısal toplulaştırmaya hazır bir IntStream üretir.
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> words = List.of("hi", "hello", "hey");
int totalChars = words.stream()
.mapToInt(String::length)
.sum();
System.out.println(totalChars);
}
}boxed: İlkel Türden Sarmalayıcı Akışına
boxed, bir IntStream'i Stream<Integer>'a dönüştürür; bir List içinde toplamadan önce buna ihtiyaç duyarsınız.
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
List<Integer> list = IntStream.rangeClosed(1, 5)
.boxed()
.collect(Collectors.toList());
System.out.println(list);
}
}mapToLong ve mapToDouble
Aynı yapı diğer ilkel türler için de geçerlidir: mapToLong ve mapToDouble.
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> prices = List.of("9.99", "19.50", "4.25");
double total = prices.stream()
.mapToDouble(Double::parseDouble)
.sum();
System.out.println(total);
}
}mapToInt Neden map'ten Daha İyidir
Bir nesne akışında map kullanmak akışı kutulanmış hâlde tutar. mapToInt, kutulamadan sum ve average gibi sayısal yöntemleri kullanıma açar.
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> nums = List.of(10, 20, 30);
double avg = nums.stream()
.mapToInt(Integer::intValue)
.average()
.getAsDouble();
System.out.println(avg);
}
}Gidiş Dönüş: Nesneden Int'e, Sonra Nesneye
Tek bir işlem hattında iki yönde de ilerleyebilirsiniz: sayıları çıkarın, dönüştürün ve ardından nesnelere geri eşleyin.
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> words = List.of("a", "bb", "ccc");
List<String> report = words.stream()
.mapToInt(String::length)
.mapToObj(len -> "len=" + len)
.collect(Collectors.toList());
System.out.println(report);
}
}asLongStream ve asDoubleStream
İlkel tür akışları içinde türleri genişletebilirsiniz: asLongStream ve asDoubleStream, sayısal genişliği değiştirirken kutulamayı önler.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
double avg = IntStream.of(1, 2, 3, 4)
.asDoubleStream()
.average()
.getAsDouble();
System.out.println(avg);
}
}İlkel Tür Sonuçlarını Toplama
İlkel değerleri bir koleksiyonda toplamak için önce boxed, ardından bir toplayıcı çağırınız.
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
Set<Integer> evens = IntStream.rangeClosed(1, 10)
.filter(n -> n % 2 == 0)
.boxed()
.collect(Collectors.toSet());
System.out.println(evens);
}
}flatMapToInt
flatMapToInt, nesneleri tek bir IntStream içinde düzleştirir; her nesnenin birden çok sayı ürettiği durumlarda kullanışlıdır.
import java.util.List;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
List<int[]> rows = List.of(new int[]{1, 2}, new int[]{3, 4});
int sum = rows.stream()
.flatMapToInt(Arrays::stream)
.sum();
System.out.println(sum);
}
}Doğru Eşleyiciyi Seçme
Yöne göre seçim yapınız:
- Nesneden ilkel türe:
mapToInt,mapToLong,mapToDouble. - İlkel türden nesneye:
mapToObjveyaboxed.
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> in = List.of("x", "yy");
String out = in.stream()
.mapToInt(String::length)
.mapToObj(Integer::toString)
.collect(Collectors.joining(","));
System.out.println(out);
}
}Hızlı Kontrol
Hangi yöntem bir IntStream'i Stream<Integer>'a dönüştürür?
Özet
Nesne akışları ile ilkel tür akışları arasında geçiş yaptınız:
mapToInt/mapToLong/mapToDouble, nesneden ilkel türe geçer.mapToObjveboxed, ilkel türden nesneye geçer.flatMapToInt, birçok sayıyı tek bir IntStream içinde düzleştirir.- İlkel tür akışlarına geçmek, kutulama olmadan sayısal toplulaştırmaları kullanıma açar.
Sıkça Sorulan Sorular
“Nesne Akışlarına ve Nesne Akışlarından Eşleme” dersi ücretsiz mi?
Evet — “Nesne Akışlarına ve Nesne Akışlarından Eşleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Nesne Akışlarına ve Nesne Akışlarından Eşleme” dersinde ne öğreneceğim?
mapToObj ve mapToInt Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Nesne Akışlarına ve Nesne Akışlarından Eşleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- IntStream ve LongStream
- Aralık ve Birleştirme İşlemleri
- Nesne Akışlarına ve Nesne Akışlarından Eşleme
- İlkel Tür Akışları Üretme