创建NavigableInterface的目的?

时间:2018-01-31 13:14:54

标签: java collections treemap sortedmap

为什么NavigableMap界面是使用其他方法定义创建的,并使用SortedMap进行了扩展,而他们可以将其添加到SortedMap界面中并像往常一样在TreeMap中实现它们?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  1. SortedMap界面已经发布(自1.2起)。这意味着那里可能有数百或数千个类依赖于SortedMap。如果要在1.6中向SortedMap添加新方法,而不提供default方法实现,则会破坏实现SortedMap的所有类。鉴于有如此多的东西依赖于Java,这将打破地球上的所有东西。我希望很明显“不打破整个星球上的所有东西”是一个足够好的理由,不会添加一些模糊不清的方法,而且它们显然是一个过于戏剧性和诙谐的描述。如果Java标准库的维护者这样做,那么没有人会使用新版本,有人可能会提交错误报告,就是这样)。
  2. 文档清楚地说明了“导航”的含义:
  3.   

    方法lowerEntry,floorEntry,ceilingEntry和higherEntry

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

    这意味着您不仅可以查找和遍历,还可以查找与所请求密钥“接近”的条目。