Ինչպես են տարբերվում 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(), որը սկսում է մշակումը և վերադարձնում վերջնական ցանկը։