Comparator

    PriorityQueue 살펴보기

    공부하게 된 계기 PriorityQueue를 꽤나 자주 사용하지만, 우선순위로 정렬하여 결과를 보여준다라고만 생각하고 있었습니다. 우선순위로 정렬을 하니, 전형적인 큐의 특성만 생각하여 넣을때마다 선형적으로 정렬되어 들어있을거라고 막연히 생각했었습니다. 최근에 알고리즘 문제를 풀며 PriorityQueue를 쓰게 되었는 데, 디버깅 과정에서 예상과는 다르게 정렬되어 있지 않은 것을 발견하고 왜 그런가를 확인해보게 되었습니다. public class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { re..

    정렬을 돕는 Comparable, Comparator

    자바에는 정렬을 도와주는 인터페이스인 Comparable, Comparator 가 있습니다.Collection 을 통해 정렬을 간편히 수행할 수 있는 데, Comparable 이나 Comparator 를 구현하는 구현체이거나 람다를 이용하여 정렬방법을 구현해야 합니다. primitive 타입 배열과 같은 것들은 자연스러운 순서로 정렬이 됩니다.(Arrays.sort 는 DualPivotQuicksort 라는 알고리즘을 사용합니다.) Comparable Comparable 은 일반적으로 생각할 수 있는 정렬을 정의할 때 구현하는 인터페이스입니다. (물론, 꼭 그럴 이유는 없습니다만 JavaDoc 의 주석으로 되어있으므로, 일반적인 용례를 생각하면 그에 따르는 것이 혼란을 줄일 수 있습니다.) Compara..