inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

나도코딩의 자바 기본편 - 풀코스 (20시간)

퀴즈 #10

퀴즈#10 질문있습니다.

246

kimjaehyo0623

작성한 질문수 1

0

 map(x -> x.age >= 20 ? x.name + " 5000원" : x.name + " 무료")

이렇게 된다는 것은 Customer 객체 x의 age가 20세 이상이면 Customer 객체 x의 이름의 내용이

' 챈들러 5000원 ' 이렇게 바뀌는 건가요?

아직 map이 어렵습니다.

java 객체지향

답변 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

kimjaehyo0623

제가 다시 생각해보니 map 때문에 리스트스트림의 내용이 Customer 객체에서 String name으로 바뀌는 것 같은데 맞을까요?

0

Ambition

네 맞습니다. 찾아보니 filter()는 컬렉션에 담겨있던 데이터들을 조건식을 통해 데이터들을 여과하여 더 작은 컬렉션에 담아두는 역할을 합니다. 이와 달리, map()은 stream에 담겨있는 데이터들을 조건식을 통해 변형시키는 것이고, 제시된 문제는 String과 String을 더하는 것이라서 그대로 연산된 String 형태를 출력하는 거라 볼 수 있죠

자세한 사항은 아래의 링크를 참고해주세요

 https://mangkyu.tistory.com/114

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

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