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> |
Ҳар бир элементни потокга ўзгартириш ва бирлаштириш |