티스토리 뷰

자바에서 리스트의 정렬은 Collections.sort() 메소드를 이용해서 쉽게 수행할 수 있다. 

리스트의 값이 기본 타입일 경우에는 바로 Collection.sort(list)를 적용하면 된다. 


만약 리스트의 값의 자체적으로 만든 객체(Object)일 경우, 어떻게 처리해야 할까? 

우선 Comparator 인터페이스를 구현해서 내부에 compare 메소드로 정렬할 방식을 정한다. 

그리고 Collection.sort를 호출할 때 Comparator 인터페이스를 구현한 클래스의 객체를 전달하면 된다. 


예제를 통해서 살펴보도록 하자~

먼저 name과 volume의 멤버 변수를 가진 MiniVo 객체를 다음과 같이 만든다. 


volume을 기준으로 정렬을 해 볼 예정이며, 좀 더 다양한 경우를 고려해서 실제값은 숫자형이지만 String으로 선언했다. 


이어서 정렬을 위한 리스트를 다음과 같이 구성한다. 

ArrayList를 활용해서 3개의 데이터를 입력하고 순서대로 출력하는 부분까지 포함했다. 


그리고 Comparator 인터페이스를 구현한 클래스의 객체를 생성하고, Collections.sort를 통해 정렬한 뒤 결과 값을 확인하는 소스다.



마지막으로 MiniComparator 클래스를 구현한 부분을 살펴보자. 

여기서 중요한 부분은 compare 메소드를 처리하는 부분이다. 


compare 메소드는 MiniVo 객체를 두개 받아서 voulme 값을 Double 형으로 변환하고 

두 수를 비교해서 결과값을 0, 1, -1로 리턴하는 함수이다. 

이 예제에서는 내림차순으로 정렬했다. 오름차순이 필요하면 1과 -1의 리턴값을 바꾸면 될 것이다. 


실행 결과를 살펴보면 다음과 같이 내림차순으로 객체들이 정렬된 것을 확인할 수 있다. 


실행하기 위한 전체 소스는 다음과 같다. 



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함