我有一个文件列表,我想根据其上次访问时间以降序对它们进行排序。以下2种方法中有什么更好的方法:
编写一个自定义比较器,该比较器具有用于反向比较的逻辑
编写一个客户比较器,该比较器具有按升序进行比较的逻辑,然后在调用者方法中调用Comparator.reversed()
我更喜欢#1,因为reversed()
将再次花费O(n)时间,其中n等于列表的大小。
我想知道这里的人们的看法。
答案 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)
。在自然顺序排序之后的最后一步,它不会反转列表。
对列表进行排序的成本是相同的。如果您的数据很大并且已经进行了预排序,那么排序方向就很重要,但是对于较小的集合,则没有实际的区别。