File tree Expand file tree Collapse file tree 1 file changed +10
-7
lines changed Expand file tree Collapse file tree 1 file changed +10
-7
lines changed Original file line number Diff line number Diff line change
1
+ 《《《 [ 返回首页] ( ../README.md ) <br />
2
+ 《《《 [ 上一节] ( 00_Comparison_and_Bounds.md )
3
+
4
+ ### 可比较的
1
5
2
6
接口 ` Comparable <T> ` 包含一个可用于比较一个对象与另一个对象的方法:
3
7
57
61
在这种情况下,我们说自然顺序与平等一致。
58
62
59
63
建议您在设计课程时选择与平等一致的自然排序。如果在集合框架中使用接口 ` SortedSet ` 或 ` SortedMap ` ,这两个函数使用自然排序来比较项目,这一点尤其重要。
60
- 如果两个比较相同的项目被添加到一个有序集合中,则只有一个将被存储,即使这两个项目不相等;排序地图也是如此。 (您也可以使用第3.4节中描述的比较器指定不同
61
- 的排序以用于排序集合或排序映射 ;但在这种情况下,指定排序应该再次与等号一致)。
64
+ 如果两个比较相同的项目被添加到一个有序集合中,则只有一个将被存储,即使这两个项目不相等;排序地图也是如此。 (您也可以使用第 ` 3.4 ` 节中描述的比较器指定
65
+ 不同的排序以用于排序集合或排序映射 ;但在这种情况下,指定排序应该再次与等号一致)。
62
66
63
67
` Java ` 核心库中几乎每个具有自然排序的类都与 ` equals ` 相一致。 ` java.math.BigDecimal ` 是一个例外,它将具有相同值但精度不同的两个小数进行比较,例如
64
68
` 4.0 ` 和 ` 4.00 ` 。 ` 3.3 ` 节给出了另一个与自然顺序不相等的类的例子。
78
82
sgn(x. compareTo(y)) == - sgn(y. compareTo(x))
79
83
```
80
84
81
- 这概括了数字的属性:` x <y ` 当且仅当 ` y> x ` 。 当且仅当 ` y.compareTo(x) ` 引发异常时,还需要 ` x.compareTo(y) ` 引发异常。
85
+ 这概括了数字的属性:` x <y ` 当且仅当 ` y> x ` 。 当且仅当 ` y.compareTo(x) ` 引发异常时,还需要 ` x.compareTo(y) ` 引发异常。
82
86
83
87
其次,比较是传递性的。 如果一个值小于第二个,而第二个小于第三个,那么第一个小于第三个:
84
88
95
99
```
96
100
97
101
这概括了数字的属性:如果 ` x == y ` ,那么 ` x <z ` 当且仅当 ` y <z ` 。 据推测,如果 ` x.compareTo(y)== 0 ` ,那么 ` x.compareTo(z) ` 会引发异常,当且仅当
98
- ` y.compareTo(z) ` 引发异常时,也需要这样做,尽管没有明确说明。
102
+ ` y.compareTo(z) ` 引发异常时,也需要这样做,尽管没有明确说明。
99
103
100
104
强烈建议比较与平等兼容:
101
105
144
148
145
149
但是当溢出时,这段代码可能会给出错误的答案。 例如,当比较大的负值和大的正值时,差异可能会大于可存储在整数 ` Integer.MAX_VALUE ` 中的最大值。
146
150
147
-
148
-
149
-
151
+ 《《《 [ 下一节] ( 02_Maximum_of_a_Collection.md ) <br />
152
+ 《《《 [ 返回首页] ( ../README.md )
You can’t perform that action at this time.
0 commit comments