Sobes.tech
Junior — Middle

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.