Comparable 이란?
- java.lang.Comparable 패키지에 속해 있으며, Comparable 인터페이스를 이용해 객체를 정렬할 수 있다.
구현 방법
1. 객체에 Comparable 인터페이스를 implements 한다.
2. compareTo() 메서드를 오버라이드 한다.
현재 객체 = this.x, 파라미터로 들어온 객체 = XY.x 라고 가정하면
- this.x > XY.x : 양수 리턴 -> 오름차순 정렬 (현재 위치(자리) 유지)
- this.x == XY.x : 0 리턴 -> 오름차순 정렬 (현재 위치(자리) 유지)
- this.x < XY.x : 음수 리턴 -> 내림차순 정렬 (두 객체 위치(자리) 변경)
코드 구현
class XY implements Comparable<XY> {
int x;
int y;
@Override
public int compareTo(XY xy) {
if(this.x > XY.x)
return 1; // x에 대해서 오름차순 정렬
else if(this.x == XY.x)
if(this.y < XY.y)
return 1; // y에 대해서는 내림차순 정렬
return -1;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
XY[] arr = new XY[n];
for(int i=0; i<n; i++){
st = new StringTokenizer(br.readLine());
arr[i] = new XY(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
Arrays.sort(arr); // compareTo() 기준에 따라 x,y 정렬됨
for(int i=0; i<n; i++){
System.out.println(arr[i].x + " " + arr[i].y);
}
br.close();
}
'공부내용 > JAVA' 카테고리의 다른 글
십진수 -> 이진수 변환 (0) | 2020.12.11 |
---|---|
String ⇔ Char Array (0) | 2020.12.11 |
날짜 차이 구하기 (Calendar) (0) | 2020.11.15 |