这两个版本是否有任何差异(例如,性能,排序):
版本1:
mylist.sort(myComparator.sort_item);
mylist.sort(myComparator.sort_post);
版本2:
// java 8
mylist.sort(myComparator.sort_item
.thenComparing(myComparator.sort_post));
答案 0 :(得分:5)
版本1:您按apt list
排序,然后将该排序扔出来以item
排序。实际上,第一种方法毫无意义。
版本2:您首先按post
排序,如果出现平局,请使用item
打破该平局。
答案 1 :(得分:2)
来自Java 8 API文档:
[thenComparing]返回另一个词典顺序比较器 比较。如果本比较者认为两个要素相等,即 比较(a,b)== 0,其他用于确定订单。
这意味着仅当第一个比较器返回0(元素相等)时才使用第二个比较器。所以在实践中,在大多数情况下应该更快,然后再调用两次。
理论上,如果排序算法具有时间复杂度C
,那么调用它两次仍然是C
(常数乘法并不重要)两种排序方法的复杂性是相同。