Java에서 정렬을 하려면, TreeSet을 이용하는 방법이 있다.
또 다른 방법으로는, Collections 클래스를 활용하는 방법이 있다.
Song 클래스를 다음과 같이 정의하자
public class Song { private String title; private String author; private int rank; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getRank() { return rank; } public void setRank(int rank) { this.rank = rank; } }
main함수내에서 다음럼 song list을 만든다
public class A{ ArrayList songList = new ArrayList(); public static void main(String[] args){ addSong(); .. } //Song list을 만들자 private static void addSong(){ Song song1 = new Song("누난 예뻐","누구냐",1); songList.add(song1); Song song2 = new Song("가질수 없는 너","기억안남",2); songList.add(song2); Song song3 = new Song("사랑해","나두",3); songList.add(song3); } }
main 함수내에서, Collection.sort(songList); 을 통해서 정렬을 시도할 것이다.
다음의 두 방법이 있다.
방법 1. Song 클래스에서 "Comparable" 를 구현함 (비교는 하나의 구성원만 됨)
public class Song implements Comparable { private String Title; .. .. //Comparable 의 compareTo 메서드 구현함 public int compareTo(Object o){ return title.compareTo(((Song)o).title ); } } public class A{ ArrayList songList = new ArrayList(); public static void main(String[] args){ .. //song class에서 title 만 compareTo로 지정하였기때문에,Title 별 정렬함 Collenctions.sort(songList); .. } }
방법 2. Song 클래스의 각 구성원들을 구별할 수 있게 함
public class A{ ArrayList songList = new ArrayList(); class TitleCompare implements Comparator { public int compare(Song s1, Song s2) { //ascending 정렬 return s1.getTitle().compareTo(s2.getTitle()); } } //Author 도 Title 처럼 "AuthorCompare" 만들어서 진행 class RankCompare implements Comparator { public int compare(Song s1, Song s2) { //ascending 정렬 return (s1.getRank() > s2.getRank() ? 1:0); } } public static void main(String[] args){ //Title 순으로 정렬 TitleCompare titleCompare = new TitleCompare(); Collection.sort(songList, titleCompare); //Rank 순으로 정렬 RankCompare rankCompare = new RankCompare(); Collection.sort(songList, rankCompare); } .. }