是否有兩個版本的任何差異(例如性能,排序):thenComparing VS排序
版本1:
mylist.sort(myComparator.sort_item);
mylist.sort(myComparator.sort_post);
版本2:
// java 8
mylist.sort(myComparator.sort_item
.thenComparing(myComparator.sort_post));
是否有兩個版本的任何差異(例如性能,排序):thenComparing VS排序
版本1:
mylist.sort(myComparator.sort_item);
mylist.sort(myComparator.sort_post);
版本2:
// java 8
mylist.sort(myComparator.sort_item
.thenComparing(myComparator.sort_post));
從Java 8 API文檔:
[thenComparing]返回一個字典順序比較器與另一個 比較器。如果該比較器認爲兩個元件相等,即 比較(A,B)== 0,其他用於確定的順序。
這意味着僅當第一個比較器返回0(元素相等)時才使用第二個比較器。所以在實踐中,在大多數情況下,它應該更快,然後調用兩次排序。理論上,如果排序算法的時間複雜度爲C
,那麼調用它兩次仍然是C
(恆定乘法無關緊要),這兩種排序方法的複雜性是相同的。
因此,這意味着,這兩個版本返回平等的結果? – nimo23
不,他們沒有。 –
@ nimo23他們差不多。根據Java 8,'List'接口現在有一個穩定的缺省方法'sort'。這意味着,如果您排序首先由'sort_post'然後排序'sort_item'再次,結果是相同的版本與鏈比較排序2.注意順序相反的版本1 – rhobincu