Middle
map жана flatMap операцияларынын айырмасы эмнеде?
sobes.tech AI
AIден жооп
map әрбір элементті жаңа элементке түрлендіреді және сол санды элементтермен бірдей санды элементтер ағынын қайтарады.
flatMap әрбір элементті элементтер ағынына түрлендіреді және содан кейін осы ішкі ағындарды бір деңгейлі тегіс ағынға біріктіреді. Бұл, бір элементтің түрлендірілуі бірнеше элементке әкелген кезде пайдаланылады.
Мысал:
Бізде List<List<String>> listOfLists түрінде тізім бар деп ойлайық.
map қолдану:
// Әрбір жолдар тізімін оның өлшеміне түрлендіреді
listOfLists.stream()
.map(list -> list.size())
.forEach(System.out::println);
// Әрбір ішкі тізімнің өлшемін шығарады: 2, 3, 1 және т.б.
flatMap қолдану:
// Әрбір жолдар тізімін сол тізімнің ағынына түрлендіреді
// және оларды (жазықтау) бір ағынға біріктіреді
listOfLists.stream()
.flatMap(list -> list.stream())
.forEach(System.out::println);
// Барлық ішкі тізімдерден барлық жолдарды шығарады: "a", "b", "c", "d", "e"...
Салыстыру кестесі:
| Операция | Кіріс | Түрлендіру | Шығыс | Мақсат |
|---|---|---|---|---|
map |
Stream<T> |
T -> R |
Stream<R> |
Әрбір элементті түрлендіру |
flatMap |
Stream<T> |
T -> Stream<R> |
Stream<R> |
Әрбір элементті ағынға түрлендіру және біріктіру |