아래 두가지 방법이 있다.
java.lang Interface Comparable<T>
java.util Interface Comparator<T>
두 인터페이스를 이용해서 Collections.sort를 이용해 정렬을 할 수가 있는데,
List에 들어가는 객체에 Comparable을 implements함으로써, 정렬을 할 수있게 된다.
방법1. Comparable을 implements한다.
class PersonalInfo implements Comparable<PersonalInfo>{
private String name = null;
private String phoneNumber = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public boolean getSortingMode() {
return sortingMode;
}
private String name = null;
private String phoneNumber = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public boolean getSortingMode() {
return sortingMode;
}
public void setSortingMode(boolean sortingMode) {
this.sortingMode = sortingMode;
}
@Override
public int compareTo(PersonalInfo o) {
return name.compareTo( o.getName() );
}
this.sortingMode = sortingMode;
}
@Override
public int compareTo(PersonalInfo o) {
return name.compareTo( o.getName() );
}
}
compareTo라는 메소드를 구현해야 하는데, 그 안에 비교하고자 하는 항목을 compareTo를 이용하여
비교해준 후,
Collections.sort()의 파라미터로 PersonalInfo객체가 들어있는 리스트를 넣어주기만 하면 된다.
위와 같은 방법은 편리하나, 여러가지 항목으로 정렬을 해야 할 경우 제약이 좀 있다.
그래서 사용하는 것이,
바로 Comparator 이다.
방법2. Comparator사용.
Comparator<PersonalInfo> comparator = new Comparator<PersonalInfo>(){
@Override
public int compare(PersonalInfo o1, PersonalInfo o2) {
return o1.getName().compareTo( o2.getName() );
}
};
Collections.sort( list, comparator );
@Override
public int compare(PersonalInfo o1, PersonalInfo o2) {
return o1.getName().compareTo( o2.getName() );
}
};
Collections.sort( list, comparator );
와 같은 방법으로 할 수 있다. 여러개의 정렬 항목에 따른 comparator를 만든 후, Collections의 파라미터로 던져주면,
정렬은 더이상 고민하지 않아도 될 것이다.
참고로 Collections.sort()의 documents내용은 다음과 같다.
댓글 없음:
댓글 쓰기