Skip to content

Commit 30bcbca

Browse files
authored
Merge pull request #116 from tukcomCD2024/refactor/#114
[refactor] LinkedSortedSet 활용
2 parents 0facac0 + 4a79c64 commit 30bcbca

File tree

1 file changed

+26
-13
lines changed
  • backend/memetory/src/main/java/com/example/memetory/domain/memes/service

1 file changed

+26
-13
lines changed

backend/memetory/src/main/java/com/example/memetory/domain/memes/service/MemesService.java

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
import java.time.Year;
55
import java.time.YearMonth;
66
import java.time.temporal.WeekFields;
7-
import java.util.Comparator;
7+
import java.util.LinkedHashMap;
88
import java.util.List;
99
import java.util.Locale;
1010
import java.util.Map;
11+
import java.util.Objects;
1112
import java.util.function.BooleanSupplier;
12-
import java.util.function.Function;
1313
import java.util.function.Supplier;
1414
import java.util.stream.Collectors;
1515

@@ -71,7 +71,7 @@ public void deleteMemes(MemesServiceDto memesServiceDto) {
7171
}
7272

7373
private Memes findMemberMemes(MemesServiceDto memesServiceDto) {
74-
Memes memes = findMemesFromMemesId(memesServiceDto.getMemesId());
74+
Memes memes = this.findMemesFromMemesId(memesServiceDto.getMemesId());
7575

7676
Member loginMember = memberService.findMemberFromEmail(memesServiceDto.getEmail());
7777
Member memesMember = memes.getMember();
@@ -135,10 +135,8 @@ public List<MemesInfoResponse> findMonthlyTop10Memes(YearMonth yearMonth) {
135135
});
136136
}
137137

138-
private List<MemesInfoResponse> findTop10MemesFromRanking(
139-
Supplier<List<MemesRankDto>> cacheSupplier,
140-
BooleanSupplier isCurrentPeriodChecker,
141-
Supplier<List<MemesRankDto>> dbSupplierWithEvent) {
138+
private List<MemesInfoResponse> findTop10MemesFromRanking(Supplier<List<MemesRankDto>> cacheSupplier,
139+
BooleanSupplier isCurrentPeriodChecker, Supplier<List<MemesRankDto>> dbSupplierWithEvent) {
142140

143141
List<MemesRankDto> rankList = cacheSupplier.get();
144142

@@ -150,13 +148,28 @@ private List<MemesInfoResponse> findTop10MemesFromRanking(
150148
}
151149

152150
Map<Long, MemesRankDto> rankMap = rankList.stream()
153-
.collect(Collectors.toMap(MemesRankDto::getMemesId, Function.identity()));
151+
.collect(Collectors.toMap(
152+
MemesRankDto::getMemesId,
153+
e -> e,
154+
(a, b) -> b,
155+
LinkedHashMap::new
156+
));
154157

155158
List<Memes> memes = memesRepository.findMemesByIdIn(rankMap.keySet());
156159

157-
return memes.stream().map(m -> {
158-
MemesRankDto dto = rankMap.get(m.getId());
159-
return MemesInfoResponse.fromMemesAndLikeCount(m, dto.getScore());
160-
}).sorted(Comparator.comparing(MemesInfoResponse::getLikeCount).reversed()).limit(10).toList();
160+
Map<Long, Memes> memesMap = memes.stream()
161+
.collect(Collectors.toMap(Memes::getId, meme -> meme));
162+
163+
return rankMap.entrySet().stream()
164+
.map(entry -> {
165+
Long id = entry.getKey();
166+
Memes meme = memesMap.get(id);
167+
if (meme == null)
168+
return null;
169+
return MemesInfoResponse.fromMemesAndLikeCount(meme, entry.getValue().getScore());
170+
})
171+
.filter(Objects::nonNull)
172+
.limit(10)
173+
.toList();
161174
}
162-
}
175+
}

0 commit comments

Comments
 (0)