如何使用预先排序的数据初始化TreeMap?

时间:2011-03-12 00:24:15

标签: java initialization treemap insertion sortedmap

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

由于这些初始化值已经排序,有没有办法将它们插入TreeMap而不支付树插入和重新平衡的log(n)成本?

1 个答案:

答案 0 :(得分:10)

当然! TreeMap.putAll方法(以及采用SortedMap的TreeMap构造函数)在内部调用名为buildFromSorted的方法,在文档中将其描述为:“按排序数据构建线性时间树算法”,以便发出声音喜欢它做你想要的。

只需给putAll方法一些实现Map的方法,但是map的entryset iterator(Map.entrySet().iterator())返回你的排序值列表。