Map ve FlatMap Metotları

Metin Alnıaçık
2 min readDec 13, 2022

--

Map ve FlatMap metotlarının her ikisi de intermediate metotlardır. Intermediate metot, bu yazının konusu olmadığından detaya girmeyeceğim.

Liste özelinde anlatmak gerekirse,
Map, listenin yapısını bozmaz. Elemanların değerleri değiştirebilir.
FlatMap, hem listenin içindeki elemanların değerlerini değiştirebilir hem de liste içindeki listeleri tek bir liste haline getirilmesini sağlar.

Bu farkları örneklerle açıklayalım.

  1. satırda listeye üç ürünün fiyatları eklenmiştir.

Değerleri konsola yazdıralım.
100.0
200.0
300.0

5. satır ile listenin içindeki her bir elemanın değerinin üzere %18 KDV ekliyoruz.

Değerleri konsola yazdıralım.
118.0
236.0
354.0

Sonuç olarak, listenin yapısı değişmemiştir. Fakat içindeki değerler değişmiştir.

FlatMap ile ilgili örneğimizde,
1, 2 ve 3 numaralı satırlarda (bağımsız) listeler oluşturuyoruz.
5. satırda allCountries adında içinde string listeleri tutan bir liste oluşturuyoruz.
6, 7 ve 8 numaralı satırlarla daha önce oluşturmuş olduğumuz listeleri allCountries listesine ekliyoruz.

Değerleri konsola yazdıralım.
[[Almanya, Avusturya, Belçika, Bulgaristan], [Ethiopia, Tanzania, Kenya, Sudan], [Japonya, Çin, Hindistan, Kore]]

Baştaki ve sondaki köşeli parantezlere bakıldığında, tüm listelerin bir liste içerisinde olduğu görülmektedir.

10. satırdaki flatmap(country -> country.stream()) koduyla iç içe listeler tek listede birleştirildi.

Map ile ilgili bir örnek daha yapalım.

4. satırda elimizde içerisinde dört tane elemanı olan bir person listesi vardır. Person sınıfında id (int), name (String) ve surname (String) alanları mevcuttur.

Bizim amacımız ise person nesnesinin içindeki id alanını alıp tüm id değerlerini string’e çevirdikten sonra yeni bir liste oluşturmaktır.

Person listesini konsola yazdırıldığında çıktı aşağıdaki gibidir.
[Person{id=1, name=’Metin’, surname=’Aln’}, Person{id=2, name=’Kağan’, surname=’Aln’}, Person{id=3, name=’Yusuf’, surname=’Aln’}, Person{id=4, name=’Dilek’, surname=’Aln’}]

14. satır ile person nesnenin içindeki sadece id alanı alıyoruz.
15. satır ile tüm integer tipindeki id değerleri string’e çevrilir.

Konsoldaki çıktı aşağıdaki gibidir.
[1, 2, 3, 4]

Son olarak, map ve flatMap metotlarının beraber kullanıldığı bir örnek yapalım.

İçinde person listelerini barındıran bir listeyi önce tek bir liste haline getiriyoruz. Daha sonra yeni listedeki id değerlerinden yeni bir liste oluşturuyoruz.

4. satırda içinde person listelerini barındıran bir liste oluşturuyoruz.

Konsola yazdıralım.
[[Person{id=1, name=’Metin’, surname=’Aln’}, Person{id=2, name=’Kağan’, surname=’Aln’}, Person{id=3, name=’Yusuf’, surname=’Aln’}, Person{id=4, name=’Dilek’, surname=’Aln’}], [Person{id=5, name=’Ahmet’, surname=’Davut’}, Person{id=6, name=’Rıza’, surname=’Özkök’}, Person{id=7, name=’Ali’, surname=’Can’}, Person{id=8, name=’Ayşe’, surname=’Nur’}], [Person{id=9, name=’Enver’, surname=’Akça’}, Person{id=10, name=’Kağan’, surname=’Korkmaz’}, Person{id=11, name=’Yusuf’, surname=’Sönmez’}, Person{id=12, name=’Yılmaz’, surname=’Aln’}]]

28. satır ile liste içerisindeki person listelerini tek liste haline getiriliyor.
29. satır ile tek liste haline getirilmiş person listesinin sadece id alanı alınıyor.

Konsol çıktısı aşağıdaki gibidir.
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Örneğin tamamına github adresimden ulaşabilirsiniz.

İyi günler,
Bol kodlamalar :)

--

--