Collections.sort()
需要Arraylist
每當我們進行排序時,爲什麼不開發Arraylist
的「偉人」沒有添加Collections
類作爲擴展類!當我們需要Arraylist中的Collections類方法時,爲什麼不擴展Collections?
-6
A
回答
1
好可能是因爲以下幾個原因
- 的ArrayList已經擴展AbstractList中,你可以在Java擴展只有一個類
- 所有類別的功能是靜態
- 他們不希望任何人在不是靜態的情況下重寫方法
- 如果有人認爲它們可以轉換成最終的非靜態方法,那麼將Collections作爲基類是沒有用的。
- 集合中的方法只是可以在ArrayList上執行的作業的一部分,並沒有定義ArrayList應該執行的操作。因此,從OOP的觀點來看,「偉人」都不會這樣做。
2
Collections
是一個實用類,ArrayList
是一個數據結構。它們都存在不同的目的。Collections.sort()
是對List
進行排序的一種實用方法,將它保留在一個地方避免代碼冗餘。Collections.sort()
是一種靜態方法,所以它不能被覆蓋。如果任何
List
實現擴展了Collections
類,那麼將來它將不能擴展任何其他類。
3
這裏是在Collections
類排序(表)實現:
132 public static <T extends Comparable<? super T>> void sort(List<T> list) {
133 Object[] a = list.toArray();
134 Arrays.sort(a);
135 ListIterator<T> i = list.listIterator();
136 for (int j=0; j<a.length; j++) {
137 i.next();
138 i.set((T)a[j]);
139 }
140 }
你看它是通用的,對任何List
執行的所有實例運行。
List
是一個接口,您不能將此實現作爲List
的實例方法,這樣可以避免在每個具體實現中重複它。這就是爲什麼最好在第三方課程中定義這些方法,Collections
。
相關問題
- 1. Collections -ArrayList
- 2. 爲什麼我們需要在android中擴展類時實現某些方法?
- 3. 爲什麼我們不能創建Collections類的實例(不是Collection接口)?
- 4. Java中的Collections和「Stored Collections」有什麼區別?爲什麼「存儲」?
- 5. 爲什麼我們需要重寫run()方法擴展線程類
- 6. 什麼是擴展方法,爲什麼我們需要使用它?
- 7. 爲什麼Google Collections中沒有SortedMultiset?
- 8. Java在Collections中的靜態方法需要說明嗎?
- 9. Sorting Array,Sorting ArrayList,using Collections
- 10. 爲什麼.fetch()未定義爲Collections?
- 11. 爲什麼我們需要addRequestHeader方法?
- 12. 爲什麼我們需要ContinueWith方法?
- 13. 爲什麼我們需要Buffer.isBuffer方法?
- 14. 當我們已經有向量時,爲什麼我們需要同步ArrayList?
- 15. 在Java中的ArrayList/Collections方法的慢代碼
- 16. 什麼時候會使用java Collections singletonMap方法?
- 17. 擴展方法問題。爲什麼我需要使用someObj = someObj.somemethod();
- 18. c#collections列表類
- 19. 爲什麼我們需要一個明確的轉換,而不是擴展方法而不是靜態方法?
- 20. 當我們有點子時,爲什麼我們需要Anaconda?
- 21. Outlet Collections
- 22. Solr - Collections API超時
- 23. 爲什麼不是Kotlin Collections中的isEmpty屬性?
- 24. 爲什麼我們需要在覆蓋方法中調用當前類django
- 25. 爲什麼要使用擴展方法?
- 26. Google Collections中的TreeMultimap
- 27. 當擴展SpringBootInitializer時,爲什麼我應該重寫configure方法?
- 28. 爲什麼我們需要System類來調用out.println()方法?
- 29. 爲什麼我們在擴展方法中使用「this」?
- 30. 爲什麼我們需要包裝類
是你的問題「爲什麼ArrayList中沒有排序方法」? –
是的我的問題是「爲什麼ArrayList沒有排序方法」@dystroy – Tushar
'Collections'只是一個包含一堆有用方法的類。你不想「延長」它。 –