자바 공부하다가 스트림(Stream)이라는 걸 봤는데요, 솔직히 왜 쓰는지 감이 안 와요. 그냥 리스트 돌면서 조건 맞는 거 걸러내는 거면 저는 그냥 for문 돌리면 되는데 굳이 이걸 왜 배워야 하나 싶어서요.
예를 들어서 숫자 리스트에서 짝수만 뽑아서 두 배 하는 코드를 이렇게 짰거든요.
List<Integer> result = new ArrayList<>();
for (int n : nums) {
if (n % 2 == 0) {
result.add(n * 2);
}
}
근데 남들 코드 보면 이걸 stream().filter().map() 이런 식으로 한 줄로 쭉 쓰더라고요. 결과는 똑같은 거 아닌가요? 뭔가 더 빨라지는 것도 아닐 것 같은데 왜 이걸 쓰는 게 좋다고들 하는 건지 궁금합니다. 그리고 이렇게 점 찍어가면서 이어붙이는 게(체이닝) 안에서 실제로 어떻게 돌아가는지도 잘 모르겠어요. filter 다 돌고 나서 map이 도는 건가요 아니면 하나씩 통과하는 건가요? 초보라 두서없이 물어봐서 죄송합니다.