public List<String> rankingList() {
List<User> allUser = userRepository.findAll();
List<UserRankResponseDto> userRankResponseDtos = new ArrayList<>();
for (User user : allUser) {
int happypoint = user.getHappypoint();
int countPosts = user.getPosts().size();
Long createdUser = user.getId();
String nickname = user.getNickname();
int avePoint = happypoint / countPosts;
UserRankResponseDto userRankResponseDto = new UserRankResponseDto(avePoint, nickname, countPosts, createdUser);
userRankResponseDtos.add(userRankResponseDto);
}
userRankResponseDtos.sort(Comparator.comparingInt(UserRankResponseDto::getAvePoint).reversed()
.thenComparingInt(UserRankResponseDto::getCountPosts).reversed()
.thenComparingLong(UserRankResponseDto::getCreatedUser)
);
List<String> result = new ArrayList<>();
for (int i = 0; i < 5; i++) {
result.add(userRankResponseDtos.get(i).getNickName());
}
return result;
}
랭킹을 구현해봤다.
그런데 user에 posts가 잘못된거 같다.
작동을 안한다 ㅠㅠ
내일 다시 해봐야지
'TIL' 카테고리의 다른 글
항해99_TIL220613 (예외처리, 즉시로딩, 지연로딩, query method) (0) | 2022.06.14 |
---|---|
항해99_WIL220612 (CORS) (0) | 2022.06.12 |
항해99_TIL220610 (미니프로젝트 시작) (0) | 2022.06.10 |
항해99_TIL220609 (db연결 안하고 테스트코드 돌리기) (0) | 2022.06.10 |
항해99_TIL220608 (주문하기 API) (0) | 2022.06.09 |