Aft*_*ess 9 java sorting algorithm arraylist priority-queue
我需要支持比读取更多的插入并保持数据排序.哪个会表现更好:
使用PriorityQueue提供比较器
要么
每次插入后使用ArrayList和调用.sort()?
.sort()每次打电话都感觉不对,但我无法说清楚原因.
优先级队列不会对您的数据进行排序.它只允许您调用以获取其最小元素.如果对优先级队列中的所有元素执行此操作,则最终将能够形成已排序元素的列表.但话说回来,你将有一个空的优先级队列.
因此,如果您需要能够在任何位置动态读取内容而不改变数据结构,则优先级队列不适合您.
您可能正在寻找的是使用TreeSet/TreeMap,它允许您保持数据排序和插入/删除相对便宜(大致为O(lg n)).