Java 8 Stream içerisinde yer alan map metotu parametre olarak java util function paketi içerisinde yer alan Function interface’i almaktadır. Stream içerisinde ki elemanları başka elamanlara dönüştürmek veya üzerlerinde işlem yapmak için Map kullanılmaktadır.
Stream Map kullanıldıktan sonra Stream’in veri tipi değişebilir, elemanları String olan bir Stream IntStream haline çevrilebilir. Map kullanıldğında Stream döngümüz sona ermez, bu yüzden Stream Map operasyonu non-terminal operasyondur.
Steram içerisinde yer alan mapToInt, mapToDouble, mapToLong primitive Streamlere çevirmek için kullanılmaktadır.
Aşağıda yer alan kod her bir ismin başına ve sonuna iki tane boşluk eklemektedir.
List < String > isimler = new ArrayList < > (); isimler.add("dogukan"); isimler.add("onur"); isimler.add("ali"); isimler.stream().map((x) - > " " + x + " ").forEach(System.out::println);
Aşağıda yer alan kod double stream’i int stream’e çevirmektedir.
DoubleStream doubleStream = DoubleStream.of(0.12, 1.2, 0.3, 5.4); doubleStream.mapToInt((x) - > (int) x).forEach(System.out::println);
Bu örnek Bir sınıfın Constructeri kullanılarak o sınıfa ait bir Stream oluşturmaktadır.
class Person { private String name; Person(String name) { this.name = name; } } List < String > isimler = new ArrayList < > (); isimler.add("dogukan"); isimler.add("onur"); isimler.add("ali"); Stream < Person > personStream = isimler.stream().map(Person::new);