Junior — Middle
W jakich momentach następuje inicjalizacja Stream podczas korzystania z API Stream?
sobes.tech AI
Odpowiedź od AI
Inicjalizacja strumienia w Java następuje w momencie wywołania operacji terminalnej. Do tego momentu operacje na strumieniu są leniwe (lazy) i nie są wykonywane.
To znaczy, gdy tworzysz strumień i stosujesz operacje pośrednie (np. filter(), map()), tylko tworzą one łańcuch przetwarzania, ale nie uruchamiają obliczeń.
Przykład:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase);
// Tutaj nic się nie dzieje
List<String> result = stream.collect(Collectors.toList()); // Operacja terminalna
// Tutaj następuje przetwarzanie elementów
W związku z tym, strumień jest inicjalizowany i zaczyna przetwarzać dane tylko po wywołaniu operacji terminalnej, takiej jak collect(), forEach(), reduce() itp.