SortedSet 的元素类型允许计算给定值的后继
Element type of SortedSet allows for calculation of the successor of a given value
来自 SortedSet 文档:
several methods return subsets with restricted ranges. Such ranges
are half-open, that is, they include their low endpoint but not their
high endpoint (where applicable). If you need a closed range (which
includes both endpoints), and the element type allows for calculation
of the successor of a given value, merely request the subrange from
lowEndpoint to successor(highEndpoint).
你能解释一下是什么意思吗
the element type allows for calculation of the successor of a given
value
哪些类型允许计算 Java 中的后继者?
允许计算后继需要您的类型具有离散值(尽管这还不够)。
Integer
就是一个很好的例子 - 2
的继任者是 3
。 3
的继任者是 4
.
比如整个集合包含1, 3
,想得到[1, 3]之间的Integer,如果直接调用
s.subSet(1, 3);
则3不在子集中
这种情况下,可以通过3 + 1 = 4
计算出3之后的下一个元素,然后调用:
s.subSet(1, 4);
那么子集中就有3个
计算机制可能与 class 和 class 不同。有Numberic
个元素或String
个,可以直接用+
计算后继。如果你在其他类型上操作,你可以自定义你自己的calculation方法,它应该和compare方法一致。
the element type allows for calculation of the successor of a given value
全看排序方式
这意味着,对于元素的排序方法,您可以计算出什么排序值将紧跟在给定值之后,它们之间不可能有任何内容。
来自文档:
For example, suppose that s is a sorted set of strings. The following
idiom obtains a view containing all of the strings in s from low to
high, inclusive: SortedSet<String> sub = s.subSet(low, high+"[=10=]");
对于字符串: (自然排序) high + "[=11=]"
是 high
[=26= 的继承者]
对于整数: (自然排序) high + 1
是 high
的继承者。 但是如果你的整数是从高到低排序的,那么后继者将是high - 1
。
对于某些值,计算后继者稍微复杂一些...
对于双打: (自然排序) Math.nextAfter(high, Double.POSITIVE_INFINITY)
是 high
的继承者,因为 nextAfter
获取 high
之后的相邻值,这样 high
和 nextAfter(high..)
之间就不会出现任何内容。 请注意,您可能 运行 遇到双打 max/min 值或 neg/pos 无穷大值的问题,因此您可能需要先检查 high
对于现实世界中的浮点数,这是行不通的(除非您对精度设置了一些限制)。
这仅适用于此处,因为在计算机中,浮点数 总是毫无例外地 具有有限的精度,因此您可以计算该精度的下一个可能值(这就是 nextAfter
所做的)。
来自 SortedSet 文档:
several methods return subsets with restricted ranges. Such ranges are half-open, that is, they include their low endpoint but not their high endpoint (where applicable). If you need a closed range (which includes both endpoints), and the element type allows for calculation of the successor of a given value, merely request the subrange from lowEndpoint to successor(highEndpoint).
你能解释一下是什么意思吗
the element type allows for calculation of the successor of a given value
哪些类型允许计算 Java 中的后继者?
允许计算后继需要您的类型具有离散值(尽管这还不够)。
Integer
就是一个很好的例子 - 2
的继任者是 3
。 3
的继任者是 4
.
比如整个集合包含1, 3
,想得到[1, 3]之间的Integer,如果直接调用
s.subSet(1, 3);
则3不在子集中
这种情况下,可以通过3 + 1 = 4
计算出3之后的下一个元素,然后调用:
s.subSet(1, 4);
那么子集中就有3个
计算机制可能与 class 和 class 不同。有Numberic
个元素或String
个,可以直接用+
计算后继。如果你在其他类型上操作,你可以自定义你自己的calculation方法,它应该和compare方法一致。
the element type allows for calculation of the successor of a given value
全看排序方式
这意味着,对于元素的排序方法,您可以计算出什么排序值将紧跟在给定值之后,它们之间不可能有任何内容。
来自文档:
For example, suppose that s is a sorted set of strings. The following idiom obtains a view containing all of the strings in s from low to high, inclusive:
SortedSet<String> sub = s.subSet(low, high+"[=10=]");
对于字符串: (自然排序) high + "[=11=]"
是 high
[=26= 的继承者]
对于整数: (自然排序) high + 1
是 high
的继承者。 但是如果你的整数是从高到低排序的,那么后继者将是high - 1
。
对于某些值,计算后继者稍微复杂一些...
对于双打: (自然排序) Math.nextAfter(high, Double.POSITIVE_INFINITY)
是 high
的继承者,因为 nextAfter
获取 high
之后的相邻值,这样 high
和 nextAfter(high..)
之间就不会出现任何内容。 请注意,您可能 运行 遇到双打 max/min 值或 neg/pos 无穷大值的问题,因此您可能需要先检查 high
对于现实世界中的浮点数,这是行不通的(除非您对精度设置了一些限制)。
这仅适用于此处,因为在计算机中,浮点数 总是毫无例外地 具有有限的精度,因此您可以计算该精度的下一个可能值(这就是 nextAfter
所做的)。