创建 NavigableInterface 的目的?

Purpose of creating NavigableInterface?

为什么 NavigableMap 接口是用额外的方法定义创建的,并用 SortedMap 扩展的,而他们本可以在 SortedMap 接口中添加它并像往常一样在 [=13= 中实现它们]?

互联网上充满了在地图上导航的答案。这里导航是什么意思?

我不会说 NavigateMap 有什么用途,而是说为什么不修改 SortedMap 界面而不是添加新界面;那是因为它会破坏现有的实现。正如您指出的 TreeMap 等可以更新以实现新方法,但是 SortedMap 的自定义实现呢?因此,任何升级到 JRE 1.6+ 的遗留代码都需要搜索代码库并实现这些新方法,但是 Java 宣称自己是向后兼容的(对于 Java 6 至少在 [=添加了 10=])

  1. SortedMap 界面已发布(自 1.2 起)。这意味着可能有成百上千的 类 依赖于 SortedMap。如果您要在 1.6 中向 SortedMap 添加新方法,而不提供 default 方法实现,这将破坏所有实现 SortedMap 的 类。鉴于如此多的东西都依赖于 Java,这将 彻底破坏地球上的一切 。我希望很明显 "not breaking everything on the entire planet" 是一个足够好的理由,而不是随意添加一些晦涩的方法 (这显然是对实际发生的事情的过于戏剧化和半开玩笑的描述。如果 Java 标准库的维护者那样做了,那么就没有人会使用新版本,而且可能会有人提交错误报告,就是这样).
  2. 文档非常清楚地说明了 "to navigate" 的含义:

Methods lowerEntry, floorEntry, ceilingEntry, and higherEntry

https://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html

意味着你不仅可以查找和遍历,还可以找到"close"到请求键的条目。