Чӣ гуна фарқият доранд амалиётҳои терминалӣ ва ғайри терминалӣ дар API Stream дар бораи вазифаҳо ва мақсадҳо?
sobes.tech AI
Ҷавоб аз AI
Дар API-и ҷараёнҳо, амалҳои терминалӣ ва ғайри-терминалӣ дар мақсад ва рафтор фарқ мекунанд:
-
Амалиёти ғайри-терминалӣ (intermediate) — ин амалҳое мебошанд, ки ҷараёни навро бармегардонанд ва имкон медиҳанд, ки занҷири тағиротҳо сохта шавад. Онҳо сусткор ҳастанд, яъне фавран иҷро намешаванд, балки танҳо вақте ки амалияи терминалӣ даъват карда мешавад. Мисолҳо:
filter(),map(),sorted(),distinct(). -
Амалиёти терминалӣ (terminal) — занҷири амалҳоро тамом мекунад ва коркарди маълумотро оғоз мекунад. Онҳо натиҷаро бармегардонанд (масалан, ҷамъият, шумора, void). Пас аз амалиёти терминалӣ, ҷараён ҳамчун баста ҳисобида мешавад ва дубора истифода намешавад. Мисолҳо:
collect(),forEach(),reduce(),count().
Мисол:
List<String> result = list.stream()
.filter(s -> s.startsWith("A")) // ғайри-терминалӣ
.map(String::toUpperCase) // ғайри-терминалӣ
.collect(Collectors.toList()); // терминалӣ
Ин ҷо, филтр ва тағирот фавран иҷро намешаванд, балки танҳо вақте ки collect() даъват мешавад, ки коркардаро оғоз мекунад ва рӯйхати ниҳоиро бармегардонад.