public interface Comparable{
int compareTo(object o); // 객체 o와 자기 자신을 비교
public interface Comparator{
int compare(object o1, object o2); // o1과 o2 두 객체를 비교
// 결과가 0이면 같다. 양수면 왼쪽이 크다. 음수면 오른쪽이 크다
boolean equals(object obj); equals를 오버라이딩하라는 뜻
역순으로 만들고 싶을 때는 comparator를 implement 해서 기본 정렬 방식에 -1을 곱해준다
Set은 정렬이 불가능하다. list에 set의 모든 요소를 저장하고, list를 정렬하는 방법뿐
return name.equals(tmp.name) && age == tmp.age;
.
.
return (name+age).hashCode(); //String + hashCode 방법
return Objects.hash(name, age); //새로운 방식
public int compareTo(Member member) {
//return (this.memberId - member.memberId); //오름차순
return (this.memberId - member.memberId) * (-1); //내림 차순
}
}
또는
public int compareTo(Member member) {
if (this.memberId > member.memberId){
return 1;
}
else if (this.memberId < member.memberId) {
return -1;
} else return 0;
}
이미 Comparable이 구현된 경우, Comparator로 비교하는 방식을 다시 구현할 수 있다
@Override
public int MyCompare(String s1, String s2) {
//return s1.compareTo(s2); // 원래 정렬과 같음
return s1.compareTo(s2)*(-1);//내림차순으로 정렬된다
}
TreeSet<String> set = new TreeSet<String>(new MyCompare());