Java文檔TreeSet
包含神祕的斷言:「一個TreeSet
的行爲是明確的,即使它的排序是嚴格部分,只不過沒有遵守Set接口的常規協定。 「我想知道當Comparable.compareTo()
被定義爲任何一對元素時,如何提供部分有序的元素,因此暗示總和關係(如果總關係是自反的,反對稱的和傳遞的,那麼它是總的順序)。TreeSet的
TreeSet的
回答
我沒有找到有關JavaDoc的「部分」 5
紅黑樹作品,TreeSet實現:在沒有與「部分」的任何信息。
您確定您正在閱讀java.util.TreeSet?
它顯示爲:「集合的行爲定義良好,即使它的排序是**不一致**與等於;它只是不服從Set接口的總體合同。' – jefflunt
我不認爲Google搜索「TreeSet」和閱讀描述可以讓我陷入這種麻煩。獲得的經驗:注意版本。 –
它是否是「全部訂單」取決於.compareTo()
的實施情況。我們假設你將一個列表Integers
排序爲一棵樹,但不是用精確的數值比較它們,而是想把所有的數字都分成100塊。所以,你會認爲數字0-99彼此相等,100-199彼此相等,200-299彼此相等。您可以通過將Integer
值加100,然後比較THAT結果來做到這一點。因此,所有數字0-99都小於全部數字100-199,但是5 == 43
和172 == 121
就.compareTo()
方法而言,因爲在比較之前所有值都除以100。
因爲在這個例子中5 == 43
那麼5可能會在43之前,或43之前43,因此它們是部分排序的,但TreeSet的行爲保持不變,因爲它使用.compareTo()
來構建樹。
您可以使用偏序排序將基本上分組的東西組合成更大的塊,即使總的自然排序不是由排序產生的。
對於部分比較,您需要四值退貨:」<","=",">「 ,和「未定義」 –
- 1. 去除TreeSet的
- 2. Java中的TreeSet
- 3. Java。 TreeSet的繼任
- 4. TreeMap/TreeSet的要求
- 5. TreeSet與樹
- 6. Java - TreeSet和hashCode()
- 7. Java:使用TreeSet
- 8. Treeset子集
- 9. 導入Scala TreeSet
- 10. TreeSet/Contains方法
- 11. 的Java TreeSet中的地圖
- 12. 迭代TreeSet的 - 從樹狀
- 13. compareTo和TreeSet的問題
- 14. 解組JAXB中的TreeSet
- 15. TreeSet方法中的錯誤
- 16. TreeSet操作的複雜性
- 17. JavaEE的TreeSet中引起org.hibernate.TransientPropertyValueException
- 18. 訪問treeset中的元素
- 19. 交換的HashSet TreeSet中和
- 20. TreeSet的排序不進行
- 21. TreeSet中的排名元素
- 22. TreeSet中與輸入
- 23. TreeSet add()返回false
- 24. 爲什麼TreeSet聲明TreeSet <E>而不是TreeSet <E extends Comparable <E>>
- 25. 使用ListModel陰影TreeSet
- 26. 類型TreeSet不帶參數?
- 27. 如何使用CompareTo()和TreeSet()
- 28. java.util.ConcurrentModificationException在迭代過TreeSet中
- 29. 在Java中使用TreeSet
- 30. TreeSet違反設置合同?
沒有提及partial http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html –
看來引用來自舊版本的Java,如v1.2左右:http://www.google.com/search?q="well-defined+even+if+its+ordering+is+strictly+partial「 – Nayuki