【发布时间】:2015-02-06 12:23:54
【问题描述】:
SortedMap 接口的 TreeMap.lastKey() 部分的时间复杂度是多少?
oracle 文档提到了有关 TreeMaps 的内容:
此实现为 containsKey、get、put 和 remove 操作提供有保证的 log(n) 时间成本。
【问题讨论】:
-
它也应该是 O(log(n))。它大部分是平衡的,需要始终向右走。
-
您还可以查看源代码,了解它是如何实现的。之后答案会很简单。
-
我明白了。即使在从地图中删除对象之后,是否有一种优雅的方法可以始终跟踪最后一个键/值?也许使用地图 entrySet?
-
@ArjunPatel O(logn) 太大了吗?你的用例是什么?
-
您可以通过包装/检测所有映射的变异方法来跟踪映射的最大键(不要忘记迭代器的
remove()方法和子映射的变异器,以及它们的 迭代器和子图等)。不过,这肯定不够优雅,而且会降低性能,尤其是多元素删除方法。
标签: java map treemap sortedmap