我的应用程序使用TreeMap来保持数据排序并进行 log(n) 查找和插入。这在应用程序运行时的一般情况下效果很好,但是当应用程序第一次启动时,我需要用几百万个我按排序(升序)获得的 long 来初始化 TreeMap。
由于这些初始化值已经排序,有什么方法可以将它们插入到 TreeMap 中而无需支付树插入和重新平衡的 log(n) 成本?
当然!该TreeMap.putAll
方法(以及采用 SortedMap 的 TreeMap 构造函数)调用buildFromSorted
内部调用的方法,该方法在文档中被描述为:“Linear time tree building algorithm from sorted data”,所以这听起来像是你想要的。
只需给该putAll
方法一些实现 Map 的东西,但 map 的 entryset 迭代器 ( Map.entrySet().iterator()
) 返回您的排序值列表。