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()); // 이름 내림차순 정렬
이런식으로 직접 정의해서 사용해볼 수도 있다.