TreeMap
中的元素已排序,因此我认为get(...)
或containsKey(...)
使用二进制搜索。这些方法是否比HashMap
中实现的方法快,并且它们确实使用二进制搜索吗?
最佳答案
Not binary search but the complexity must be O(logn):
此实现为containsKey,get,put和remove操作提供了保证的log(n)时间成本。算法是对Cormen,Leiserson和Rivest的算法介绍中的算法的改编。
注意,它实际上是一棵红黑树:
基于红黑树的NavigableMap实现
但是请注意,尽管我总是讨厌将哈希表盲目地视为O(1)数据结构,但出于几乎所有实际目的,HashMap都是O(1)
,除非:例如,您选择了非常糟糕的哈希函数或对地图进行了大规模重载。