TIL- 220722- 게시글 내림차순
어제밤 프로젝트 사실상 마지막날에 내가 구현하고자 했던 댓글기능, 검색기능, 게시판기능을 다 완료를 했는데 결과물을 보니 아무리 생각해도 너무 허전하다. 게시판 같을려면 진짜 게시판 같아야 겠다고 판단을 해서 새벽에 급하게 기능을 조금 추가하기로 마음을 먹었다. 어떤 기능을 추가를 해야 할까를 생각하던 도중 조회수 나 좋아요 순으로 내림차순으로 게시물을 정렬하는 것 정도는 할 수 있지 않을까? 라는 생각이 들었다.
게시물의 조회수들을 리스트에 담은 뒤에 Array.sort로 내림 차순으로 정렬을 해준뒤에 for문을 돌려서 리스트의 0,1,2,3..... 번째랑 게시글의 조회수랑 일치하면 출력을 해주면 되겠다 라고 판단을 하고 코드를 작성을 해보니까 안된다.... 뭔가 항상 이런식이다.
어? 이렇게 하면 될 것 같은데 하면 10번중에 1번 정도 말고는 안된다. ㅋㅋ 그래도 이런 과정이 모르는 것들을 알아가는 좋은 과정이라고 생각은 하는데 조금 허무해 지는 것은 어쩔 수 없나보다. 음.. .이 방법은 안된다.
그러면 어떻게 해야할까 Post객체 안에 있는 view(조회수)를 기준으로 혹시 정렬을 해줄 수는 없나? 라는 생각이 들어서 구글링을 해보니 오! 있다!! 확실히 뭔가 기능적으로 이런 건 없나 라고 생각을 하면 대부분은 있는 것 같은 아주 친절한 프로그래밍 언어다.
바로 이것인데 아주 간단하다 자바 오브젝트 클래스의 메소드인 compare메서드를 override해서 사용을 하면 된다. compare메소드의 return 값은 2번 post객체 있는 조회수 에서 1번 post객체에 있는 조회수를 빼라는 식이 아니라 배열의 자리를 바꿔준다는 뜻으로 사용이 되는 것 같다.
그렇게 해서 새벽에 나름 빠르게 기능을 구현을 할 수 있었고 객체를 내가 원하는 기준으로 정렬을 할 수 있다는 것 도 알게 되었다.
그런데 이게 compator와 comparable이라는 Post클래스를 인터페이스로 사용을 하는 방법도 있었는데 어제는 일단은 결과물이 내가 원하는 대로 나오니 넘어 가긴 했는데 꽤나 자주 사용 할 수 있는 기능일 것 같기 때문에 좀 더 자세히 알아보고 자바 개념노트에 정리까지 하는 방향으로 가야 할 것 같다.