자바에서 다양한 정렬기준 커스텀하기
- [ 코딩테스트 ]
- 2024. 3. 21.
Comparator를 사용하려면 Array나 List Collection에 대해서 가능하다.
1. Primitive type array
primitive type의 경우 Comparator를 사용할 수 없다. 내림차순 정렬을 위해서 Collections.reverseOrder()를 사용하기 위해서는 아래와 같이 Wrapper Type으로 감싸서 사용해야 한다.
2. Wrapper type array
Integer[] arr = new Integer[30];
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
3. Collection
ArrayList<Node> nodes = new ArrayList<>();
Collections.sort(arr, new Comparator<Node>() {
@Override
public int compare(Node n1, Node n2) {
return n1.start-o2.start;
}
});
class Node implements Comparable<myObject> {
int start;
int end;
@Override
public int compareTo(myObject o) {
return this.start-o.start;
}
}
// 사용
Collctions.sort(node);
Array.sort()함수의 인자로 Comparator의 compare()함수를 구현하여 넣어주거나, 대상 클래스를 Comarable<>을 구현하도록 만들고 compareTo() 함수를 오버라이딩해주면 된다.
4. Priority Queue
static PriorityQueue<Jewel> pq = new PriorityQueue<>(new Comparator<Jewel>() {
@Override
public int compare(Jewel o1, Jewel o2) {
return o2.v-o1.v; // value 내림차순 정렬
}
});
우선순위 큐의 경우도 인자로 Comparator의 compare()함수를 구현하여 넣어주면 된다.
'[ 코딩테스트 ]' 카테고리의 다른 글
코테 문제유형 정리 + 팁 (0) | 2023.07.23 |
---|---|
코테용 Java 라이브러리(자료구조) 정리 (0) | 2023.01.04 |