Sobes.tech
Junior — Middle

Ar galite paaiškinti, ką reiškia terminas 'ne pabaigos operacija' dirbant su duomenų srautais Stream API?

sobes.tech AI

Atsakymas iš AI

Java Stream API operacijos skirstomos į terminalines ir ne terminalines (tarpines).

Ne terminalinė operacija yra tokia, kuri grąžina naują srautą (Stream) ir nedelsdama pradeda duomenų apdorojimą. Ji naudojama transformacijų grandinės kūrimui, pvz., filtravimui, žemėlapių sudarymui, rūšiavimui.

Ne terminalinių operacijų pavyzdžiai:

  • filter()
  • map()
  • sorted()
  • distinct()

Šios operacijos yra tingios: jos nevykdomos, kol nėra iškviesta terminalinė operacija, pvz., forEach(), collect(), count().

Pavyzdys:

List<String> list = Arrays.asList("a", "bb", "ccc");

list.stream()
    .filter(s -> s.length() > 1) // ne terminalinė
    .map(String::toUpperCase)    // ne terminalinė
    .forEach(System.out::println); // terminalinė

Taip, ne terminalinės operacijos leidžia kurti transformacijų grandinę, o terminalinė pradeda vykdymą.