添加元素以根据其成本自动更正位置,具有最高性能

时间:2011-04-26 09:01:16

标签: java performance collections set comparator

之前我有一个问题:How to sort a list of objects according to two parameters to compare at Java?

现在我想这样做:

I will define a list and when I add en element it it will find the correct place for it according the its cost. (I don't want to generate a list that has unordered elements and sort them after that)

我想以最佳表现来做到这一点。我的意思是我的列表将每次都被订购,所以当我想添加一个元素时,该列表将添加到有序列表中。有序列表的成本可能是O(logn),找到二进制搜索的正确位置(即使找到可能成本较低的地方,向该列表添加元素(即ArrayList)可能需要比其好处更多的成本,因此您可以建议添加没有二进制搜索实现的元素,如果你认为使用该类(ArrayList等等)不擅长总计

1 个答案:

答案 0 :(得分:1)

您可以使用TreeSet(首先删除O(log n)insert和O(1))或PriorityQueue(首先删除O(1)insert和O(log n))

注意:TreeSet在您插入时排序,而PriorityQueue则不是。

避免O(log n)操作的唯一方法是对可能值的范围做一些严格的假设,这在这里不太可能有用。