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> Әрбір элементті ағынға түрлендіру және біріктіру