[Java] 다중 조건 정렬 (Comparator)

ungnam·5일 전

정렬 기준이 하나가 아니라 여러 개일 때 사용한다.

  • 길이 짧은 순 → 길이가 같으면 사전순
  • 빈도 높은 순 → 빈도가 같으면 사전순

문자열 정렬은 compareTo()를 쓴다.

Arrays.sort(words, (a, b) -> {
    if (a.length() != b.length()) {
        return Integer.compare(a.length(), b.length());
    }
    return a.compareTo(b);
});

HashMap과 같이 쓰면 빈도 정렬도 가능하다.

List<String> keys = new ArrayList<>(map.keySet());

keys.sort((a, b) -> {
    int ca = map.get(a);
    int cb = map.get(b);
    if (ca != cb) {
        return Integer.compare(cb, ca);
    }
    return a.compareTo(b);
});
profile
꾸준함을 잃지 말자.

0개의 댓글