smooth waters run deep

공부내용/JAVA

Comparable interface (객체 정렬)

yeon_11 2020. 12. 4. 14:49

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