我的应用使用 TreeMap保持数据排序并进行 log(n) 查找和插入。这在应用程序运行时的一般情况下效果很好,但是当应用程序首次启动时,我需要用我按排序(升序)获得的几百万长来初始化 TreeMap。
既然这些初始化值已经排序了,有没有什么方法可以将它们插入到 TreeMap 而无需支付树插入和重新平衡的 log(n) 成本?
最佳答案
当然! TreeMap.putAll
方法(以及采用 SortedMap 的 TreeMap 构造函数)调用名为 buildFromSorted
的方法在内部,这在文档中被描述为:“基于排序数据的线性时间树构建算法”,所以这听起来像是你想要的。
只需给 putAll
方法一些实现 Map 的东西,但是 map 的入口集迭代器 (Map.entrySet().iterator()
) 会返回您的排序值列表.
关于java - 如何使用预排序数据初始化 TreeMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279840/