Kā atšķiras terminālās un neterminālās operācijas Stream API pēc funkcijām un mērķa?
sobes.tech AI
Atbilde no AI
Stream API terminālās un neterminālās operācijas atšķiras pēc mērķa un uzvedības:
-
Ne terminālās (intermediate) — tās ir operācijas, kas atgriež jaunu straumi un ļauj veidot pārveidojumu ķēdi. Tās ir slinkas, tas ir, tās netiek izpildītas uzreiz, bet tikai izsaucot terminālo operāciju. Piemēri:
filter(),map(),sorted(),distinct(). -
Termiālās (terminal) — noslēdz operāciju ķēdi un sāk datu apstrādi. Tās atgriež rezultātu (piemēram, kolekciju, skaitli, void). Pēc terminālās operācijas straume tiek uzskatīta par slēgtu un to nevar atkārtoti izmantot. Piemēri:
collect(),forEach(),reduce(),count().
Piemērs:
List<String> result = list.stream()
.filter(s -> s.startsWith("A")) // ne terminālās
.map(String::toUpperCase) // ne terminālās
.collect(Collectors.toList()); // terminālā
Šeit filtri un pārveidojumi netiek veikti uzreiz, bet tikai izsaucot collect(), kas sāk apstrādi un atgriež galīgo sarakstu.