Это происходит очень поздно, но в JDK есть класс только для того, чтобы иметь отсортированный список. Он назван (несколько не в порядке с другими интерфейсами Sorted*
) "java.util.PriorityQueue
". Он может сортировать либо Comparable<?>
s, либо использовать Comparator
.
Разница с List
, отсортированная с использованием Collections.sort(...)
, заключается в том, что это будет поддерживать частичный порядок в любое время, с O (log (n)) с использованием структуры данных кучи, тогда как вставка в отсортированном ArrayList
будет O (n) (т. е. с использованием двоичного поиска и перемещения).
Однако, в отличие от List
, PriorityQueue
не поддерживает индексированный доступ (get(5)
), единственный способ получить доступ к элементам в куче - это вынуть их по одному (таким образом, имя PriorityQueue
).