TreeMap不会比较地图中的每个元素

时间:2018-07-31 19:09:11

标签: java treemap

这是一个普遍的问题: 我在TreeMap中编写了一个自定义比较器,以比较自定义类A(由我自己定义)。我发现,当我继续向树图中添加键-值对时,新添加的键不会比较树图中的每个键,而是只会比较底部的几个键而跳过顶部的一些键。这样树形图中就有重复的键。

有人问过这个问题吗?同样,这是一个普遍的问题,代码,尤其是用于测试的数据集不向公众开放。

1 个答案:

答案 0 :(得分:2)

这是预期的行为。 TreeMap类被实现为二进制搜索树。这样,它仅需要访问节点总数的以2为底的对数。您可以在TreeMap.java实现中亲眼看到这种行为,其中代码确定它是否需要访问左或右子节点。有关详细信息,请查看put()get()方法的实现。