다운 스트림 컬렉터 Collectors.collectingAndThen()
38
ㅅㄱㅇ
작성한 질문수 1
0
// 4단계 : 학년별로 가장 점수가 높은 학생의 이름을 구해라. (collectingAndThen + maxBy 사용)
// 학년별 그룹 -> 그룹별 가장 점수가 높은 학생 -> 그룹별 최고점 학생 -> 그룹별 최고점 학생의 이름
Map<Integer, String> collect4 = students.stream()
.collect(Collectors.groupingBy( // 스트림 컬렉터
Student::getGrade,
Collectors.collectingAndThen( // 다운 스트림 컬렉터
Collectors.maxBy(Comparator.comparingInt(Student::getScore)), // 다운 다운 스트림 컬렉터
sOpt -> sOpt.get().getName()
)
));
System.out.println("collect4 = " + collect4);Collectors.collectingAndThen()을 저런식으로 이해해도 될까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
GGOBUGI님이 질문하신 Collectors.collectingAndThen()에 대한 이해는 올바르다고 생각됩니다.
Collectors.collectingAndThen()은 주어진 컬렉터로 수집한 결과를 변환할 때 사용됩니다. 질문에 주어진 코드를 보면, 학년별로 그룹화한 후 각각의 그룹에서 최고점수를 가진 학생을 선택하는데 Collectors.maxBy를 사용하고, 그 후 collectingAndThen을 통해 그 결과를 학생의 이름으로 변환하고 있습니다.
따라서, collectingAndThen은 주어진 컬렉터의 결과를 추가적인 변환(여기서는 학생 객체를 학생의 이름 문자열로)을 적용하는데 적합한 방법입니다.
위의 코드에 사용된 방식으로 이해하셔도 좋다고 사료됩니다.
추가적으로 더 궁금한 부분이 있다면 언제든지 질문해 주세요!
즐거운 코딩 되세요!
상금은 언제 받을 수 있나요?
2
33
0
17강 강의에 목데이터 첨부파일이 없습니다.
2
68
2
Issuance 테이블에 status, couponId 인덱스가 꼭 필요할까요?
2
24
1
화면 깜박임 현상
2
61
1





