Stream API-деги терминалдык жана терминалдык эмес операциялар алардын функциялары жана максаттары боюнча эмнеге айырмаланат?
sobes.tech AI
AIден жооп
Stream API-де терминалдык жана терминалдык эмес операциялар максаты жана жүрүм-туруму боюнча айырмаланат:
-
Терминалдык эмес (аралык) операциялар — жаңы потокту кайтарган жана трансформациялардын чынжырын түзүүгө мүмкүндүк берген операциялар. Алар сарамжал, башкача айтканда, алар дароо аткарылбайт, тескерисинче, терминалдык операция чакырылганда гана ишке ашат. Мисалдар:
filter(),map(),sorted(),distinct(). -
Терминалдык операциялар — операциялар чынжырын аяктап, маалыматтарды иштетүүнү баштайт. Алар натыйжаны кайтарат (мисалы, жыйнак, сан, void). Терминалдык операциядан кийин поток жабык деп эсептелет жана кайра колдонулбайт. Мисалдар:
collect(),forEach(),reduce(),count().
Мисал:
List<String> result = list.stream()
.filter(s -> s.startsWith("A")) // терминал эмес
.map(String::toUpperCase) // терминал эмес
.collect(Collectors.toList()); // терминалдык
Бул жерде фильтрлоо жана түрленүү дароо аткарылбайт, тескерисинче, collect() чакырылганда гана ишке ашат жана акыркы тизмени кайтарат.