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

fid*_*idu 5 java collections interface set

如果NavigableSet JavaDoc仅是一个接口,为什么还要说明性能指标?

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

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

这里有一个类似的帖子但是ConcurrentSkipListSet是一个实现类。

Mur*_*nik 3

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

这对于两个方面来说很重要。

首先,作为此接口(或任何实现它的类)的用户,您应该了解此性能考虑因素,并相应地编写代码。例如,在您引用的段落中,注意到“升序操作和视图的性能可能比降序操作和视图的性能更快”。这意味着如果您想迭代 a NavigableSet,您可能应该从头到尾迭代,而不是相反(即使两者都可以工作!)。

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