@Test
@Transactional
public void 공유수_정렬_테스트 () {
List<News> newsList = newsDao.getNews();
List<News> sortedBySendCount = this.getSortedNewsListBySendCount(newsList);
logger.debug("debug - {}", sortedBySendCount );
}
private List<News> getSortedNewsListBySendCount (List<News> newses) {
Collections.sort(newses, (obj1, obj2) -> obj2.getNewsSendCount().getAllCount().compareTo(obj1.getNewsSendCount().getAllCount()));
return newses;
}
위의 코드처럼 정렬을 하고 싶은데 (DB에서 정렬을 주어 가져오면 안되는 상황이여서 일단 데이터를 가져와서 정렬을 해주어야 합니다.)
위의 private 메소드를 News 라는 도메인 객체에 넣어주려고 생각을 했는데 호출을 위해서는 해당 객체를 생성해서 사용하거나 메소드를 static 메소드로 두어야 하여 조금 어색하다는 느낌이있었습니다. (뉴스 기사를 정렬하는것이니 뉴스객체에서 해줘야 맞지 않나 생각했습니다.)
이런식의 리스트를 정렬하는 메소드는 따로 데이터를 비교하는 객체를 만들어서 역할을 해당 객체에 주는 방법으로 하는게 좋을까요? 아니면 뉴스객체에서 static 메소드로 두어 정렬을 해주는게 좋을까요?
아직 이런식의 프로그래밍이 익숙하지가 않아 조금 헷갈리는것 같습니다.
2개의 의견 from SLiPP
다음 문서 참고해 보세요.
Java object sorting example (Comparable and Comparator) 문서를 보면 Comparable 와 Comparator 둘의 차이점을 보여주는 예제들이 있으니 한번 비교해 보세요.
질문한 내용은 News가 Comparable 인터페이스를 구현하는 방식으로 하면 될 듯 합니다.
이 문서의 "3. Sort an Object with Comparable" 예제 한번 보세요.
Regarding to your question you can refer below resource with good examples on Comparable interface,
http://www.flowerbrackets.com/two-best-ways-in-java-to-sort-string-array/
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.