У меня есть программа, которая использует ArrayList<T>
, и этот тип T также реализует Comparable<T>
. Мне нужно сохранить этот список отсортированным.структура данных коллекции java для хранения отсортированных предметов
На данный момент, когда я вставляю новый элемент, я добавляю его в ArrayList
, а затем вызываю Collections.sort(myArrayList)
.
Является ли сортировка с Collections.sort
каждый раз, когда я вставляю новый элемент, серьезно повреждающий сложность времени выполнения?
Есть ли более подходящая структура данных, которую я могу использовать, чтобы всегда сортировать список? Я знаю структуру, называемую PriorityQueue
, но мне также нужно иметь возможность получать элементы списка по индексу.
EDIT: В моем конкретном случае, вставляя новый элемент бывает гораздо меньше, чем адресности уже существующий элемент, так что в конечном итоге хороший совет также мог бы остаться с ArrayList
, так как он получил постоянную временную сложность получения элемента , Но если вы знаете что-нибудь еще ...
'TreeSet' - ваш друг. –
Любые конкретные причины, по которым вы не можете/не можете вставить какой-либо новый элемент в его отсортированное местоположение? –
@kocko 'TreeSet' также не предоставляет произвольный доступ. –