为什么NavigableSet JavaDoc声明有关实现的详细信息?

时间:2019-05-08 12:33:29

标签: java collections interface set

为什么 NavigableSet JavaDoc如果仅是接口,则说明性能指标?

如果从理论上讲,该接口不知道有关其实现的详细信息,那么NavigableSet接口如何描述:

  

“上升操作和视图的性能可能比下降操作和视图的性能更快。”

有类似的帖子here,但是 ConcurrentSkipListSet 是实现类。

1 个答案:

答案 0 :(得分:3)

在Java中没有强制执行这种行为的“真正”方法,因此该文档用于从性能的角度描述接口的预期行为。

这对于两个方面都很重要。

首先,作为该接口(或实现该接口的任何类)的用户,您应该了解此性能注意事项,并相应地编写代码。例如,在您引用的paragrpah中,应注意的是“上升操作和视图的性能可能比下降操作和视图的性能更快”。这意味着,如果您要遍历NavigableSet,则可能应该从头到尾进行遍历,而不是反过来进行遍历(即使两者都可以使用!)。

第二,作为此接口的实现者,您应该意识到这是期望,并且该接口的用户可能已经编写了代码来考虑这种行为(如上一段所述)。这意味着,例如,您可以实施NavigatableSet,其中降序运算的性能要好于其升序运算的性能,但您可能不应该-这不是用户期望此类工作的方式。