2025. 1. 7. 15:38ㆍ개발일지
아니 대체 검색을 하는데 제목에 with 북마크와 팔로우는 왜 붙어있냐고?
내가 이번에 알게 된 것들을 좀 정리해보고자 해서 그럼!!
현재상황
사이드프로젝트를 하면서 검색 API를 진행하고 있는데,
개별 검색, 전체 검색을 필터 걸어서 하나의 API로 하고자하는데,,,
솔직히 어렵다.. 하하
지금까지 기껏해봐야 한 두개정도의 검색이었는데,, 여러 개 검색이라니.. 그것도 하나의 API로?,,,
게다가 일도 하면서,,,
근데 다 핑계야!!!! 하면 다 돼!!! (???) 나름대로 새로 아~ 하게 되는게 있어서 도움이 많이 된다.
그래서 이 게시글도 쓰는거 아니겠냐고..
무튼 그 중에
내가 누른 북마크, 유저를 팔로우 한 것의 값을 반환해야 하는데
val follow =
user?.let { followRepository.findByFollowedUserId(it).mapNotNull { it.followingUserId.id }.toSet() }
?: emptySet()
val bookmark = user?.let {
bookmarkPlacesRepository.findByBookmarkIdUserId(it.id!!).mapNotNull { bookmarkPlace ->
bookmarkPlace.placeId.id
}.toSet()
} ?: emptySet()
이런식으로 Set를 이용해서 해보았다. (데이터 타입도 Set<Long> 이었다..)
자료구조에 대해 이론만 간단하게 봤지,
코드에 직접적으로 남기는 것은 거진 처음이었다.
고민
이런식으로 하다가 문득 생각나는게 있었다....
처음에 반환 값을 Set<Long>으로 줬을 때의 내 생각은,
어차피 내가 하나의 유저를 팔로우 하는 것이 한 번의 경우고,, 다른 사람이 그 동일한 인물을 팔로우 하는 것은 중복이 아니라고 생각했기 때문이다.. 즉, 별개라고 생각했다.. ;;
근데 어엉?
이게 맞나??
Set은 중복허용이 안되는데... 이걸 중복이 아니라고 할 수 있나?
북마크인 경우 하나의 리스트에 하나의 게시물이 들어있는것이 아니라..
여러 리스트에 동일한 게시물이 들어갈 수도 있지 않는가? 그렇게 되면 중복이 되는 것이 아닌가?
그렇게 생각해보니 그럼 팔로우도 마찬가지다..
나만 A,B를 팔로우하는 것이 아니다.
C역시 A,B를 팔로우를 할 수 있는것이 아닌가?
흠... 그럼 List를 쓰면 되는 것인가?
아냐아냐 그래도 좁게 보면 내가 하나의 리스트를 만들어 그 안에서는 중복이 안되는 건 맞잖아 ( == 기획상)
게다가 팔로우도 나만 하는 것만 따지면 중복이 안되는 게 맞잖아!!!
아하!!!
그럼 Set<Long>을 안에두고 List로 한 번 더 에워싸면 되지 않나?
오 맞네~~~~~~~~List<Set<Long>> 좋은듯?
그래서 위에 있는 저 코드들을 수정해보려고 한다...
사실 기획마다 다 다를 것 같구,,
이게 확실한 100퍼센트의 정답은 아니지만
그래도 자료구조를 내 나름대로 적용을 해보려고 했고
근데 이건 어떨까? 저건 어떨까? 고민하면서 했기에..
그리고 기억하기 위해 작성해본다... 껄껄 재밌는듯?
공부하자 자료구조.(궁서체)
'개발일지' 카테고리의 다른 글
TIL 20241212 - ??? 세상에 limit 사실 (1) | 2024.12.12 |
---|---|
TIL20241020 (0) | 2024.10.20 |
TIL - 20241004 - 기본 데이터 타입(primitive type)과 객체 타입(Reference type)은 서로 직접적으로 캐스팅할 수 없음. (0) | 2024.10.04 |
TIL 20240930 (1) | 2024.09.30 |
TIL 20240815 - 자바 프로젝트 메모 (1) (1) | 2024.08.15 |