sort comparable, comparator
Comparable
- 처음 생성 시 정렬 조건을 정함
- CompareTo 함수를 오버라이딩 해서 정렬기준을 재정의한다
- -1 : 비교대상의 값이 작다
- 1 : 비교대상의 값이 크다
- 0 : 같다
SortExam.java
public class SortExam {
public static void main(String[] args) {
Random r = new Random();
TreeSet<Integer> set = new TreeSet<>(new Desending());
for(int i = 0; set.size() < 6;++i){
int num = r.nextInt(49)+1;
set.add(num);
}
System.out.println(set);
}
}
Desending.java
importjava.util.Comparator;
public class Desending implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2){
// 내림차순 대한 정렬기준 정의
if(o1 < o2)
return 1;
else if(o1 > o2)
return -1;
return 0;
}
}
Comparator
- 현재 정렬조건과 다른 정렬조건을 설정할 때 사용
- compare 함수를 오버라이딩해서 정렬 기준을 재정의 한다
mport java.util.ArrayList;
import java.util.Collections;
importjava.util.Comparator;
import java.util.List;
public class SortExam2 {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
list.add(new Person("홍자바", 50));
list.add(new Person("정자바", 80));
list.add(new Person("한자바", 40));
list.add(new Person("서자바", 100));
list.add(new Person("김자바", 20));
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
// 이름을 기준으로 오름차순
if(o1.getName().compareTo(o2.getName()) > 0)
return 1;
else if(o1.getName().compareTo(o2.getName()) < 0)
return -1;
return 0;
}
});
System.out.println(list);
}
}