reverseOrder方法收集的时间复杂度

Pri*_*nka 1 java collections

我有一个文件列表,我想根据上次访问时间按降序排序.以下两种方式有哪些更好的方法:

  1. 编写一个自定义比较器,它具有相反顺序比较的逻辑

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

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

Kar*_*cki 5

所有Comparator.reversed()这一切都是通过为Comparator按自然顺序排序的目标创建一个新的包装器对象来反转参数的顺序.而不是(a, b)比较(b, a).它不会将列表作为自然顺序排序后的最后一步反转.

排序列表的成本将是相同的.如果您的数据很大且已经预先排序,排序方向将很重要,但对于小型集合,它没有实际区别.

  • 编写惯用且清晰易读的代码.我会去'逆转()`.如果性能不可接受,请编写JMH微基准测试,以证明编写自定义比较器可提高性能.最大的问题是您的数据是什么以及如何加载它. (2认同)