JAVA

[JAVA] ArrayList 정렬하기

퉁그리 2022. 1. 16. 21:04

java 8이후로 쉬운 list 정렬방법이 나왔다.

 

이제 컬렉션없이 Comparator을 이용하여 리스트에서 바로 list함수를 바로 꺼내쓸 수 있다.

 

// 오름차순으로 정렬
list.sort(Comparator.naturalOrder());

// 내림차순으로 정렬
list.sort(Comparator.reverseOrder());

이 밖에 객체나 특정 상황에서 비교군을 임의의로 정의해야할 때가 있다.

이때는 Comparator 인터페이스를 구현하여 사용해볼 수 있다.

 

인터페이스 구현

public static class ChampRateComparator implements Comparator<ForChampIdAndRate> {

    @Override
    public int compare(ForChampIdAndRate o1, ForChampIdAndRate o2) {
        if (o1.getRate() > o2.getRate()) {
            return 1;
        } else if (o1.getRate() < o2.getRate()) {
            return -1;
        }
        return 0;
    }
}

public static class ChampNameComparator implements Comparator<ForChampIdAndRate> {

    @Override
    public int compare(ForChampIdAndRate o1, ForChampIdAndRate o2) {
        return o1.getName().compareTo(o2.getName())
    }
}

실코드

List<ForChampIdAndRate> champIdAndRates = new ArrayList<>();

...

champIdAndRates.sort(new ChampRateComparator()); // 승률 오름차순 정렬
champIdAndRates.sort(new ChampRateComparator().reversed()); // 승률 내림차순 정렬

champIdAndRates.sort(new ChampNameComparator()); // 이름 오름차순 정렬
champIdAndRates.sort(new ChampNameComparator().reversed()); // 이름 내림차순 정렬

 

이런식으로 직접 정의해서 사용해볼 수도 있다.