-
[JAVA] ArrayList 정렬하기JAVA 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()); // 이름 내림차순 정렬
이런식으로 직접 정의해서 사용해볼 수도 있다.
'JAVA' 카테고리의 다른 글
[JAVA] Enum 활용 (0) 2022.02.25 [Java] HashMap Value 기준으로 정렬하기 (0) 2022.01.13 [Java] Java 함수적 인터페이스 Consumer, Supplier (0) 2021.12.17 [Java]Optional 활용법 (0) 2021.12.17 [Java] Optional (0) 2021.12.17