然后比较与排序

时间:2017-09-16 14:53:05

标签: java-8 comparable

这两个版本是否有任何差异(例如,性能,排序):

版本1:

mylist.sort(myComparator.sort_item);
mylist.sort(myComparator.sort_post);

版本2:

// java 8
mylist.sort(myComparator.sort_item
            .thenComparing(myComparator.sort_post));

2 个答案:

答案 0 :(得分:5)

版本1:您按apt list排序,然后将该排序扔出来以item排序。实际上,第一种方法毫无意义。

版本2:您首先按post排序,如果出现平局,请使用item打破该平局。

答案 1 :(得分:2)

来自Java 8 API文档:

  

[thenComparing]返回另一个词典顺序比较器   比较。如果本比较者认为两个要素相等,即   比较(a,b)== 0,其他用于确定订单。

这意味着仅当第一个比较器返回0(元素相等)时才使用第二个比较器。所以在实践中,在大多数情况下应该更快,然后再调用两次。

理论上,如果排序算法具有时间复杂度C,那么调用它两次仍然是C(常数乘法并不重要)两种排序方法的复杂性是相同。