7

我的应用程序使用TreeMap来保持数据排序并进行 log(n) 查找和插入。这在应用程序运行时的一般情况下效果很好,但是当应用程序第一次启动时,我需要用几百万个我按排序(升序)获得的 long 来初始化 TreeMap。

由于这些初始化值已经排序,有什么方法可以将它们插入到 TreeMap 中而无需支付树插入和重新平衡的 log(n) 成本?

4

1 回答 1

12

当然!该TreeMap.putAll方法(以及采用 SortedMap 的 TreeMap 构造函数)调用buildFromSorted内部调用的方法,该方法在文档中被描述为:“Linear time tree building algorithm from sorted data”,所以这听起来像是你想要的。

只需给该putAll方法一些实现 Map 的东西,但 map 的 entryset 迭代器 ( Map.entrySet().iterator()) 返回您的排序值列表。

于 2011-03-12T00:33:06.600 回答