람다식 질문 있습니다!
278
작성한 질문수 2
선생님 안녕하세요!
스트림 강의를 듣다가 람다식 부분이 이해가 되지 않아 질문 드립니다!
아래 3 번째 줄, .filter(x -> x>=90) 부분이 이해가 잘 되지 않는데요.
int[] scores = {100, 95, 90, 85, 80};
Arrays.stream(scores)
.filter(x -> x>= 90)
.forEach(x -> System.out.println(x)); // 100, 95, 90
화살표 왼쪽 X 는, scores 변수 값들을 의미 하는 걸까요?
화살표 오른쪽 X 는,
return x >= 90과 같다고 이해하면 될까요?그러면 return 된 값은 어디로 저장이 되는 걸까요?
흑흑. 람다식 너무 어렵습니다 😢
답변 1
0
안녕하세요?
저도 처음 람다식을 공부할 때 참 많은 궁금증을 동반했던 것 같아요! 하나씩 설명드려 볼게요 😊
Arrays.stream(scores).filter(x -> x >= 90).forEach(x -> System.out.println(x));먼저 위 코드를 뜯어볼까요?
Arrays.stream(scores)이 코드는 은 scores 배열을 정수 스트림으로 변환합니다. 이를 통해 배열의 요소에 대해 작업을 수행할 수 있어요.
filter(x -> x >= 90)이 코드는 스트림에 적용되는 필터링 연산입니다. 여기서 x 는 스트림의 개별 요소를 나타내며 현재 처리 중인 요소의 값을 임시 변수처럼 저장하는 역할을 하는데 x 대신 다른 이름으로 만드셔도 무방합니다. 그리고 filter() 에 의해 각 요소 x 에 대해서 x >= 90 라는 조건을 만족하는 않는 요소는 필터링돼요.
forEach(x -> System.out.println(x))이 코드는 스트림의 필터링된 요소에 대해 반복하는 최종 연산입니다. x -> System.out.println(x) 은 각 요소 x 에 대해 수행할 동작(여기서는 출력)을 지정하죠.
그럼 앞의 코드를 다음과 같이 수행 가능한 3개의 라인으로 나눠볼까요?
IntStream scoreStream = Arrays.stream(scores);
IntStream filteredStream = scoreStream.filter(x -> x >= 90);
filteredStream.forEach(x -> System.out.println(x));먼저 첫 번째 줄에서 scores 배열을 정수 스트림으로 변환하고 이를 scoreStream 이라는 변수로 참조합니다.
두 번째 줄에서는 scoresStream 에 x >= 90 라는 필터링 연산을 적용하고 그 결과를 filteredStream 이라는 변수로 참조합니다. 이때 90점 이상의 점수 데이터만 남게 되므로 filteredStream 은 90 점 이상의 점수 데이터만을 포함하는 스트림인 셈이죠.
마지막으로 filteredStream 에 출력 동작을 적용하여 각 요소를 출력합니다. 결과적으로 90점 이상의 데이터만 출력되도록 합니다.
나누어서 생각해보니 조금 더 이해가 쉽지요?
궁금증 해결에 도움되었으면 합니다 😊
감사합니다.
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
1
146
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
119
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
72
1
사고력 키우는 법이 어떤게 있나요?
0
94
2
getter setter
0
103
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
80
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
76
2
변수 이름짓는법
0
114
2
intelli J 실행오류
0
115
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
152
2
영상이 재생이 안됩니다.
0
167
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
117
2
응용이 어렵습니다.
0
206
2
IntelliJ가 보이지 않습니다.
0
187
3
JDK 버전 문의
0
130
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
122
2
Iterator 문의
0
105
1
코드 순서 문의
0
143
1
클래스 메소드
0
150
2
Quiz_05 관련 질문드립니다 !
0
118
2
다운로드가 안됩니다
0
165
2
다형성
0
120
2
HashMap
0
80
2





