我對使用Java的compareTo()
方法的工作原理非常困惑。在通過Collections.sort()
方法傳遞一個列表時,哪些對象實際上被比較以返回負值還是正值或零值?關於java中的compareTo()方法
-3
A
回答
0
它用於分類。所以所有元素都進行比較,最終用於分類。
+0
https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html這是一個例子。 – Karen
0
所有這些,其中大部分是幾次。你的問題真的是「如何排序工作」,這對於StackOverflow來說太寬泛了。
但是,一個簡單的答案是,該算法比較每對元素,每次調用compareTo()
,以決定哪一個是「較小」(對於「較小」的某些定義)。良好的排序算法儘量減少比較次數,但每個元素都必須與其他一些數字(其中該數字通常大於1)進行比較。
compareTo()
存在的原因是,它允許您決定對象的「較小」和「較大」含義,允許您根據需要對其進行排序。
0
假設您的清單是List<Integer>
,其值爲[5, 7, 3]
。 Integer
有compareTo()
。
排序的確切方法取決於算法,但讓我們嘗試一個簡單的bubblesort。
5.compareTo(7)
< 0:沒有必要7.compareTo(3)
> 0的動作:交換元素
名單現在是[5, 3, 7]
。
3.compareTo(5)
> 0:交換元素
名單現在是[3, 5, 7]
和排序已經完成。
在這個特定的例子中,所有元素最終與所有其他元素進行比較。很少出現這種情況,因爲智能排序算法可以最小化必要的比較次數。
相關問題
- 1. Java CompareTo方法
- 2. compareTo方法java
- 3. java - compareTo方法
- 4. Java中的CompareTo()方法
- 5. Java Override CompareTo方法
- 6. 的Java compareTo方法發出
- 7. 無法@覆蓋Java中的compareTo()方法
- 8. java compareTo方法實現
- 9. CompareTo方法在Java怪怪
- 10. 瞭解java中的compareto()方法
- 11. Java的可比接口compareTo方法
- 12. 基於compareTo的調用方法?
- 13. 與的compareTo()方法
- 14. 爲什麼我得到關於compareTo方法的這個錯誤?
- 15. 寫一個公共int compareTo()方法java
- 16. 對於compareTo方法,Java沒有自動裝箱功能?
- 17. 關於Java中的方法重載
- 18. 關於Java中trim()方法的查詢
- 19. 重寫compareTo時使用compareTo方法?
- 20. 使用compareTo方法
- 21. CompareTo方法錯誤
- 22. PriorityQueue和compareTo方法
- 23. compareTo方法:Object arg?
- 24. 關於java方法調用
- 25. 的CompareTo方法與列表
- 26. Java:null安全的compareTo方法
- 27. 在一個參數中創建java中的compareTo方法
- 28. 關於在java中覆蓋equals方法
- 29. 是否有可能在Java中重寫String的compareTo方法?
- 30. 在java字符串中equals和compareto方法之間的區別
請參考[這個SO問題](http://stackoverflow.com/questions/18754490/using-compareto-and-collections-sort) – Prashant
你是否[閱讀文檔](https://docs.oracle。 COM/JavaSE的/ 8 /文檔/ API /爪哇/郎/ Comparable.html#的compareTo-T-)? – resueman
所有這些。您需要查看所有值來對列表進行排序(只需將所有內容與其他所有內容進行比較)即可。 –