为什么NavigableMap
界面是使用其他方法定义创建的,并使用SortedMap
进行了扩展,而他们可以将其添加到SortedMap
界面中并像往常一样在TreeMap
中实现它们?
互联网上充满了包含在地图中导航的答案。导航是什么意思?
答案 0 :(得分:0)
我不会谈论使用NavigateMap
的内容,而是讨论为什么SortedMap
接口未被修改而不是添加新接口;那是因为它会破坏现有的实现。正如您所指出的那样TreeMap
等可以更新以实现新方法,但是SortedMap
的自定义实现呢?因此,升级到JRE 1.6+的任何遗留代码都需要搜索代码库并实现这些新方法,但Java宣称自己是向后兼容的(对于Java 6,至少在添加NavigateMap
时)
答案 1 :(得分:0)
SortedMap
界面已经发布(自1.2起)。这意味着那里可能有数百或数千个类依赖于SortedMap
。如果要在1.6中向SortedMap
添加新方法,而不提供default
方法实现,则会破坏实现SortedMap
的所有类。鉴于有如此多的东西依赖于Java,这将打破地球上的所有东西。我希望很明显“不打破整个星球上的所有东西”是一个足够好的理由,不会添加一些模糊不清的方法,而且它们显然是一个过于戏剧性和诙谐的描述。如果Java标准库的维护者这样做,那么没有人会使用新版本,有人可能会提交错误报告,就是这样)。方法lowerEntry,floorEntry,ceilingEntry和higherEntry
https://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html
这意味着您不仅可以查找和遍历,还可以查找与所请求密钥“接近”的条目。