Junior — Middle
რა განსხვავებაა map და flatMap მეთოდებს შორის Java Stream API-ში და რა არის მათი გამოყენების თავისებურებები?
sobes.tech AI
პასუხი AI-სგან
Java Stream API-ის map და flatMap მეთოდები სერიის ელემენტების გარდაქმნისთვის გამოიყენება, მაგრამ სხვადასხვა გზით მუშაობენ:
-
mapიღებს ფუნქციას, რომელიც თითოეულ ელემენტს სხვა ელემენტად გარდაქმნის. შედეგად მიიღება იგივე რაოდენობის ელემენტების სერია, მაგრამ სხვა ტიპით ან სახით. -
flatMapიღებს ფუნქციას, რომელიც თითოეულ ელემენტს გარდაქმნის ელემენტების სერიის (Stream) სახით, და შემდეგ ამ სერიებს ("ფლატებს") ერთ საერთო სერიად აერთიანებს. ეს სასარგებლოა, როდესაც ერთი ელემენტიდან რამდენიმე ელემენტი უნდა მიიღოს.
მაგალითი:
List<String> words = Arrays.asList("hello", "world");
// map: თითოეულ სიტყვას ვაქცევთ მისი სიგრძის მიხედვით
List<Integer> lengths = words.stream()
.map(String::length)
.collect(Collectors.toList()); // [5, 5]
// flatMap: ვყოფთ თითოეულ სიტყვას ასოებად და ვაერთიანებთ ყველა ასოს ერთ სერიაში
List<String> letters = words.stream()
.flatMap(word -> Arrays.stream(word.split("")))
.collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]
გამოყენების მახასიათებლები:
mapშესაფერისია მარტივი ელემენტ-ელემენტ გარდაქმნებისთვის.flatMapსაჭიროა, როდესაც ერთი ელემენტიდან რამდენიმე ელემენტი უნდა მიიღოს და სერიის შიგნით სტრუქტურების "ფლატირება" სჭირდება.