작성
·
237
0
// 중간 연산 한 번 사용으로 And 연산 사용하기
langList.stream().filter(x -> x.length() <= 4 && x.contains("c")).forEach(System.out::println);
System.out.println("-----------------------------");
// 중간 연산 두 번 사용
langList.stream().filter(x -> x.length() <= 4 && x.contains("c")).forEach(System.out::println);
System.out.println("-----------------------------");
-> 궁금해서 해보다가 And 연사자를 사용하는 것도 되더라고요.
위에 나와있는 두 개의 코드 모두 사용해도 상관없는 지와 어떤 것을 사용하는 것이 더 좋다고 할 수 있는지 궁금합니다
답변 1
1
안녕하세요?
자바 스트림에서 중간 연산을 두 번 사용하는 것과 And (&&) 연산자를 통해서 중간 연산을 한 번만 사용하는 것은 기능적으로 동일합니다. 두 가지 접근 방식은 동일한 결과를 생성하며, 각각의 방법은 스트림의 요소를 필터링하기 위해 사용될 수 있습니다.
// 중간 연산 한 번 사용으로 And 연산 사용하기
langList.stream().filter(x -> x.length() <= 4
&& x.contains("c")).forEach(System.out::println);
System.out.println("-----------------------------");
// 중간 연산 두 번 사용
langList.stream().filter(x -> x.length() <= 4)
.filter(x -> x.contains("c")).forEach(System.out::println);
System.out.println("-----------------------------");
첫 번째 코드 예제에서는 And (&&) 연산자를 사용하여 코드를 더 간결하게 만들 수 있으며, 중간 연산을 한 번만 사용하므로 스트림의 요소를 한 번만 반복하게 됩니다. 반면 두 번째 코드 예제에서는 중간 연산을 두 번 사용하므로 스트림의 요소를 두 번 반복하게 됩니다. 그러나 이 정도의 성능 차이는 무시할 수 있을 정도로 작으며, 코드의 가독성과 쉬운 유지 보수를 위해 어떤 방법이 좋을지 결정하면 됩니다.
정리하면, 두 가지 방법 중 어느 것을 선택하든 결과는 동일하므로 편하신 방법을 사용하시면 되겠습니다 😊
감사합니다.