Junior — Middle
Java Stream API-деги map жана flatMap ыкмаларынын айырмасы эмнеде жана алардын колдонуу өзгөчөлүктөрү кандай?
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бир эле элементтен көп элемент алуу керек болгондо жана ички түзүмдөрдү "жука" кылуу зарыл болгондо колдонулат.