SortedSet或任何Collection然后Collections.sort()?

时间:2014-10-22 06:55:38

标签: sorting

我需要一系列元素。我只会添加新元素并迭代所有集合。我需要对元素进行排序。但我不需要任意访问,只需要那两个操作。

什么是更好(更有效),使用SortedSet(每个添加的元素将被排序)或使用Collection(例如List)和最后一次插入后的那个(Collections.sort)?

请记住,迭代必须返回已排序的元素。

谢谢!

2 个答案:

答案 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。 这也允许您使用链表,如果需要,可以使用重复元素。