반응형
계층구조
package: java.util.Comparator
정의
compare메서드를 사용해서 여러가지 특별한 조건을 가진 정렬을 구현하기 위한 인터페이스.
예를 들어, 사이즈별로 오름차순으로 정렬하고, 같은 사이즈들 파일이름을 내림차순으로 정렬할수 있음.
compare() 메서드에 대하여
compare 메서드는 양수가 나오면 두 피라미터의 위치를 바꾸며, 그외에는 아무것도 하지 않습니다.
조건식 | 리턴값 |
---|---|
첫번째 피라미터 < 두번째 피라미터 | 음수 |
첫번째 피라미터 == 두번째 피라미터 | 0 |
첫번째 피라미터 > 두번째 피라미터 | 양수 |
사용법
MyComparator implements Comparator<>
MyComparator myComparator = new MyComparator();
Arrays.sort(array, myComparator);
Collections.sort(list, myComparator);
Java 예제
import java.awt.*;
import java.util.Comparator;
public class MyComparator implements Comparator<Point> {
public int compare(Point p1, Point p2) {
if (p1.x > p2.x) {
return 1; // x를 기준으로 오름차순
} else if (p1.x == p2.x) {
if (p1.y < p2.y) { // y를 기준으로 내림차순
return 1;
}
}
return -1;
}
}
import java.awt.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
List<Point> pointList = new ArrayList<>();
pointList.add(new Point(10, 10));
pointList.add(new Point(1, 8));
pointList.add(new Point(5, 2));
pointList.add(new Point(1, 2));
pointList.add(new Point(5, 5));
pointList.add(new Point(10, 1));
System.out.println("current list");
for (Point temp : pointList) {
System.out.println("x: " + temp.x + " " + "y: " + temp.y);
}
MyComparator myComparator = new MyComparator();
Collections.sort(pointList, myComparator);
System.out.println("sorted list");
for (Point temp : pointList) {
System.out.println("x: " + temp.x + " " + "y: " + temp.y);
}
}
}
결과
current list
x: 10 y: 10
x: 1 y: 8
x: 5 y: 2
x: 1 y: 2
x: 5 y: 5
x: 10 y: 1
sorted list
x: 1 y: 8
x: 1 y: 2
x: 5 y: 5
x: 5 y: 2
x: 10 y: 10
x: 10 y: 1
반응형
'old > Programming' 카테고리의 다른 글
최고로 효율적인 반복문을 찾아보자(for, while, recursion) (0) | 2022.01.07 |
---|---|
자바 comparable 사용법 (0) | 2021.12.10 |
[엑셀 함수]셀 내용 합치는 2가지 방법 (0) | 2021.11.20 |
자바에서 iterator란? (0) | 2021.11.19 |
파이썬의 조건문과 루프문-if, for, while (0) | 2021.11.19 |