
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());