Java

Comparable & Comparator

voider 2020. 9. 9. 10:48
public interface Comparator {
    int compare(Object o1, Object o2);
}

public interface Comparable {
    public int CompareTo(Object o);
}

Comparable

기본 정렬 기준을 구현할 때 사용한다.

Comparator

기본 정렬 기준 외, 다른 기준으로 정렬할 때 사용한다.

package com.javaex.ch11;

import java.util.Arrays;
import java.util.Comparator;

public class ComparatorEx {
    public static void main(String[] args) {
        String[] strArr = {"cat", "Dog", "lion", "tiger"};

        Arrays.sort(strArr);    //String의 Comparable구현에 의한 정렬
        System.out.println("strArr : " + Arrays.toString(strArr));

        Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); //대소문자 구분 X
        System.out.println("strArr : " + Arrays.toString(strArr));

        Arrays.sort(strArr, new Descending());
        System.out.println("strArr : " + Arrays.toString(strArr));

    }
}

class Descending implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
        if(o1 instanceof Comparable && o2 instanceof Comparable) {
            Comparable c1 = (Comparable) o1;
            Comparable c2 = (Comparable) o2;

            /* -1을 곱해서 역순으로 변경 */
            //return c1.compareTo(c2) * -1;

            //혹은 순서를 바꾼다.
            return c2.compareTo(c1);

        }
        return -1;
    }
}

'Java' 카테고리의 다른 글

TreeSet  (0) 2020.09.09
HashSet  (0) 2020.09.09
Arrays  (0) 2020.09.09
List  (0) 2020.09.09
Stack & Queue  (0) 2020.09.09