반응형
Map은 Key-Value 구조로 이루어져 있으며, Key는 Set, Value는 List로 구성되어있다.
Key를 기준으로 정렬하려면 TreeMap을 사용하면 된다.
Value를 기준으로 Map을 정렬하는 방법과 멤버변수를 기준으로 Collection을 정렬하는 방법을 알아보자.
1. Value 값들을 List로 추출
Map인 경우 Value 값들을 List로 추출해준다.
list = new ArrayList<>(map.values());
2. Comparator 만들기
Comparator 인터페이스를 구현하는 클래스를 만들어 compare() 메소드를 재정의 한다.
compare() 메소드는 비교할 두 대상을 파라미터로 받고, 결과에 따라 -1, 0, 1을 반환한다.
반대로 정렬 시에는 클래스를 또 만들어줘도 되지만, Collections의 reverse()메소드를 사용하면 간단하게 순서를 반대로 만들 수 있다.
// 이름 오름차순 정렬
public class NameAscCompare implements Comparator<Student> {
@Override
public int compare(Student a, Student b) {
return a.getName().compareTo(b.getName());
}
}
// 성적 내림차순 정렬
public class ScoreDescCompare implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.getAvg() < o2.getAvg() ? 1 : o1.getAvg() > o2.getAvg() ? -1 : 0;
}
}
3. sort() 메소드
Collections의 sort() 메소드를 사용하여 List를 정렬한다.
Collections.sort(list, new NameAscCompare()); // 이름 오름차순으로 정렬하여 list에 저장
Collections.sort(list, new AvgDescCompare()); // 성적 내림차순으로 정렬하여 list에 저장
반응형
'개발_웹 > Java' 카테고리의 다른 글
Java | 제네릭 파라미터 타입 제한, 와일드카드 타입 (0) | 2019.05.10 |
---|---|
Java | equals(), hashCode() 오버라이딩을 통한 객체 비교 (0) | 2019.05.10 |
Java | toString() 메소드로 객체의 정보 출력하기 (0) | 2019.05.10 |
Java | enum (열거형) 활용하기 (0) | 2019.05.10 |
Java | 접두사와 접미사로 진수, 타입 표현하기 (0) | 2019.05.10 |