Java

[Java] Comparator / Comparable

무토(MUTO) 2020. 12. 8. 16:31

1.Comparable<T>

class Data implements Comparable<Data>{
    int time;
    int layer;

    public Data(int time, int layer) {
        this.time = time;
        this.layer = layer;
    }

    @Override
    public int compareTo(Data o) {
        if (this.time > o.time) {
            return 1;
        } else if (time == o.time) {
            if (layer < o.layer) {
                return 1;
            } else {
                return -1;
            }
        } else {
            return -1;
        }
    }
}

임의의 두 수를 설정하고 양수를 리턴하면 자리를 바꾼다.
ex) this = 3, o = 1 -> 3이 1보다 크므로 1을 리턴하면 자리가 바뀌어 1 ,3 이 된다.(오름차순 정렬)

2.Comparator

public class Main {

    public static void main(String[] args) throws IOException {
        String[] arr = {"Hello","My", "Name","IS","MunHyeok"};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        Arrays.sort(arr,(o1,o2)-> {//양수면 자리를 바꾼다?
            return o2.length() - o1.length();
        });

        System.out.println(Arrays.toString(arr));
    }
}

위와 같이 임의의 두 수를 설정하고 양수를 리턴하면 자리를 바꾼다.
ex) o1 = 1, o2 = 3 -> o2 - o1는 2이므로 양수를 리턴하면 자리가 바뀌어 3 ,1 이 된다.(내림차순 정렬)

'Java' 카테고리의 다른 글

[Java] 정규표현식 (기본)  (0) 2021.03.21