Junior — Middle
Чӣ фарқият байни усулҳои map ва flatMap дар Java Stream API ва хусусиятҳои истифодаи онҳо чист?
sobes.tech AI
Ҷавоб аз AI
Методҳои map ва flatMap дар API Stream-и Java барои табдил додани унсурҳои ҷараён истифода мешаванд, аммо онҳо ба таври гуногун кор мекунанд:
-
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вақте зарур аст, ки аз як унсур чанд унсур ба даст овардан лозим аст ва структураҳои дарунсохтро "филтрашавӣ" кардан лозим аст.