Sobes.tech
Junior — Middle

Czy przepływ danych będzie wykonywał się bez uruchomienia operacji końcowej?

sobes.tech AI

Odpowiedź od AI

W Java strumień danych (stream) nie zostanie wykonany bez wywołania operacji końcowej (terminal operation). Strumienie w Java są leniwe: operacje pośrednie (np. map, filter) opisują tylko transformacje, ale nie są wykonywane od razu.

Przykład:

Stream<Integer> stream = Stream.of(1, 2, 3, 4)
    .filter(x -> x % 2 == 0)
    .map(x -> x * x);
// Tutaj nic się nie dzieje, ponieważ nie ma operacji końcowej

List<Integer> result = stream.collect(Collectors.toList()); // Operacja końcowa, uruchamia obliczenia

Bez wywołania operacji końcowej (collect, forEach, reduce itp.) strumień nie zostanie przetworzony, a obliczenia nie zostaną wykonane.