Collection的reverseOrder方法的时间复杂度

时间:2019-01-11 18:47:23

标签: java collections

我有一个文件列表,我想根据其上次访问时间以降序对它们进行排序。以下2种方法中有什么更好的方法:

  1. 编写一个自定义比较器,该比较器具有用于反向比较的逻辑

  2. 编写一个客户比较器,该比较器具有按升序进行比较的逻辑,然后在调用者方法中调用Comparator.reversed()

我更喜欢#1,因为reversed()将再次花费O(n)时间,其中n等于列表的大小。 我想知道这里的人们的看法。

1 个答案:

答案 0 :(得分:5)

par(mfrow=c(2,3)) x <- c(1:4,6:9) myPlot<-function(x){ plot(pros.dat, pros.dat$svi ~ pros.dat[,x]) } lapply(c(1:4,6:9), FUN=myPlot) 所做的所有事情都是通过为目标Comparator.reversed()创建一个以自然顺序排序的新包装对象来颠倒参数的顺序。代替Comparator而不是(a, b)。在自然顺序排序之后的最后一步,它不会反转列表。

对列表进行排序的成本是相同的。如果您的数据很大并且已经进行了预排序,那么排序方向就很重要,但是对于较小的集合,则没有实际的区别。