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