gpt4 book ai didi

java - 为什么 "boolean inclusive"版本的 NavigableSet 返回 NavigableSet,而那些没有 "boolean inclusive"版本的 NavigableSet 返回 SortedSet?

转载 作者:行者123 更新时间:2023-12-01 11:54:29 25 4
gpt4 key购买 nike

标题说明了一切...我想知道为什么当我通过例如创建 NavigableSet 的子集时headSet(E toElement),我得到一个 SortedSet,并以 boolean Include 作为参数,即 headSet(E toElement,包含 boolean 值),我得到一个 NavigableSet

我知道 NavigableSet 扩展了 SortedSet,并且 SortedSet 有一个方法 headSet(E toElement) 返回a SortedSet,但为什么他们不决定更改子接口(interface)中的返回类型?或者还返回一个带有新添加的 headSet(E toElement, boolean Included)SortedSet,只是为了保持一致?

返回的集合只是在是否包含 toElement 方面有所不同,所以我不明白为什么它们应该具有不同的类型。

最佳答案

因为 boolean 值inclusive表示高端端点是否包含在返回的 View 中。

要检索也包含最高结束点的 Set,将调用 subset 方法,该方法返回 SortedSet 这就是您获得实例的原因。

您调用的方法headSet将调用其中的subSet,因为您指定它是包含的。

参见subSet documentation

如果您认为,如果您想处理查找最高/较低值等问题,那么使用排序集会更容易,这是合乎逻辑的。

编辑: javadoc 确实解释了这一点,感谢 @laune 指出了这一点:

Methods subSet(E, E), headSet(E), and tailSet(E) are specified to return SortedSet to allow existing implementations of SortedSet to be compatibly retrofitted to implement NavigableSet, but extensions and implementations of this interface are encouraged to override these methods to return NavigableSet.

关于java - 为什么 "boolean inclusive"版本的 NavigableSet 返回 NavigableSet,而那些没有 "boolean inclusive"版本的 NavigableSet 返回 SortedSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28546708/

25 4 0