작성
·
185
답변 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
네 맞습니다. 찾아보니 filter()는 컬렉션에 담겨있던 데이터들을 조건식을 통해 데이터들을 여과하여 더 작은 컬렉션에 담아두는 역할을 합니다. 이와 달리, map()은 stream에 담겨있는 데이터들을 조건식을 통해 변형시키는 것이고, 제시된 문제는 String과 String을 더하는 것이라서 그대로 연산된 String 형태를 출력하는 거라 볼 수 있죠
자세한 사항은 아래의 링크를 참고해주세요
https://mangkyu.tistory.com/114