java - 如何使用预排序数据初始化 TreeMap?

标签 java initialization treemap insertion sortedmap

我的应用使用 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/

相关文章:

java - 具有多个 Activity 和 fragment 的 Android Manifest 已严重损坏!我该如何修复它们?

java - Netbeans 的数据源向导不检索任何表

c++ - 另一个 C++ 对象初始化询问

Java:测试未初始化的字节

java - TreeMap put() 静默删除其他条目?

java - 如何用java编写自己的比较器类?

Java 按引用传递 int

java - Clojure:LOG4J 1.2.16 和 SLF4J 1.5.6 与 clj-tika 和 Ring-middleware-logger 发生冲突

ios - 使用自定义 init 转入 UITableViewController

java - TreeMap 中的 'natural ordering' 是什么?