Java doc TreeSet
包含神秘的断言:“ TreeSet
的行为定义明确,即使其排序严格部分;它也未能遵守Set接口的一般契约。“我想知道在为任何一对元素定义Comparable.compareTo()
时如何提供部分有序元素,因此暗示总关系(如果总关系是反身的,反对称的和传递的,则它是总的顺序)。
答案 0 :(得分:-2)
它是否是“总订单”取决于.compareTo()
的实施情况。
假设您正在将列表Integers
排序到树中,但不是通过精确的数值比较它们,而是希望将所有数字组合成100个块。因此,您会认为数字0-99相等相互之间,100-199彼此相等,200-299彼此相等。您可以将Integer
值设为100,然后比较该结果。因此,所有数字0-99都小于所有数字100-199,但5 == 43
和172 == 121
就.compareTo()
方法而言,因为所有值除以100之前都是比较。
因为,在这个例子中,5 == 43
然后5可以在43之前,或者在5之前的43之前 - 因此,它们被部分排序,但TreeSet的行为保持不变,因为它使用{{1}构建树。
您可以使用部分排序将事物基本上组合成更大的块,即使总排序不是由排序产生的。
答案 1 :(得分:-2)
我在JavaDoc 5中找不到关于'partial'的任何信息。
红黑树适用于TreeSet实现,它与“部分”没有任何关系。
您确定要阅读 java.util.TreeSet 吗?