这是一个普遍的问题: 我在TreeMap中编写了一个自定义比较器,以比较自定义类A(由我自己定义)。我发现,当我继续向树图中添加键-值对时,新添加的键不会比较树图中的每个键,而是只会比较底部的几个键而跳过顶部的一些键。这样树形图中就有重复的键。
有人问过这个问题吗?同样,这是一个普遍的问题,代码,尤其是用于测试的数据集不向公众开放。
答案 0 :(得分:2)
这是预期的行为。 TreeMap
类被实现为二进制搜索树。这样,它仅需要访问节点总数的以2为底的对数。您可以在TreeMap.java
实现中亲眼看到这种行为,其中代码确定它是否需要访问左或右子节点。有关详细信息,请查看put()
和get()
方法的实现。