퀴즈#10 질문있습니다.
246
작성한 질문수 1
map(x -> x.age >= 20 ? x.name + " 5000원" : x.name + " 무료")
이렇게 된다는 것은 Customer 객체 x의 age가 20세 이상이면 Customer 객체 x의 이름의 내용이
' 챈들러 5000원 ' 이렇게 바뀌는 건가요?
아직 map이 어렵습니다.
답변 2
0
안녕하세요?
네, 맞습니다. 코드에서 list는 ArrayList<Customer> 형식의 객체이며 list.stream()은 list를 스트림으로 변환합니다. 그리고 .map() 메서드는 스트림의 각 요소에 대해 지정된 함수를 적용하여 새로운 요소로 매핑하구요.
map(x -> x.age >= 20 ? x.name + " 5000원" : x.name + " 무료") // Stream<String>위 코드는 각 Customer 객체를 입력으로 받아서 조건에 따라 문자열을 생성합니다. x.age >= 20은 x의 age가 20 이상인지 확인하는 조건입니다.
이 조건식이 참이면
x.name + " 5000원"이 반환되고, 조건식이 거짓이면
x.name + " 무료"가 반환됩니다.
결국 20세 이상인 Customer 객체의 이름은 " 5000원" 이 추가된 String 으로 바뀌게 되지요.
만약 map 부분을 다음과 같이 바꿔서 이름은 출력하지 않고 5000 또는 0 이라는 가격 정보만 매핑하게 되면 Integer 로 바뀌게 된답니다.
map(x -> x.age >= 20 ? 5000 : 0) // Stream<Integer>궁금증 해결에 도움되길 바라겠습니다 😊
감사합니다.
0
제가 다시 생각해보니 map 때문에 리스트스트림의 내용이 Customer 객체에서 String name으로 바뀌는 것 같은데 맞을까요?
0
네 맞습니다. 찾아보니 filter()는 컬렉션에 담겨있던 데이터들을 조건식을 통해 데이터들을 여과하여 더 작은 컬렉션에 담아두는 역할을 합니다. 이와 달리, map()은 stream에 담겨있는 데이터들을 조건식을 통해 변형시키는 것이고, 제시된 문제는 String과 String을 더하는 것이라서 그대로 연산된 String 형태를 출력하는 거라 볼 수 있죠
자세한 사항은 아래의 링크를 참고해주세요
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
1
146
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
119
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
70
1
사고력 키우는 법이 어떤게 있나요?
0
93
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
186
3
JDK 버전 문의
0
129
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
121
2
Iterator 문의
0
105
1
코드 순서 문의
0
142
1
클래스 메소드
0
149
2
Quiz_05 관련 질문드립니다 !
0
118
2
다운로드가 안됩니다
0
165
2
다형성
0
120
2
HashMap
0
80
2





