我需要一系列元素。我只会添加新元素并迭代所有集合。我需要对元素进行排序。但我不需要任意访问,只需要那两个操作。
什么是更好(更有效),使用SortedSet(每个添加的元素将被排序)或使用Collection(例如List)和最后一次插入后的那个(Collections.sort)?
请记住,迭代必须返回已排序的元素。
谢谢!
答案 0 :(得分:0)
理论上两种方法都具有相同的复杂性:
插入n
元素,然后对列表进行排序
n * O(1) + O(n log(n)) = O(n log(n))
在sortedList
中插入n
个元素
n * O(log(n)) = O(n log(n))
答案 1 :(得分:0)
Collections.sort
具有nlog(n)的时间复杂度,与TreeSet
相同。差异是TreeSet
有一个开销,即每个插入对所有元素进行排序并删除。因此,如果您想在添加所有元素后迭代已排序的集合,那么最好使用Collections.sort
。
这也允许您使用链表,如果需要,可以使用重复元素。