Sobes.tech
Junior — Middle

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() чакырылганда гана ишке ашат жана акыркы тизмени кайтарат.