按顺序迭代HashMap

Kal*_*lEl 0 java collections

我有一个HashMap。

它拥有数亿个观测值。

按键的数字顺序迭代HashMap元素的最佳方法是什么?

我考虑过更改为TreeMap,但没有这样做,因为它实际上可能会增加创建Map的负担(因为TreeMap为O(n),HashMap为O(1))。

ass*_*ias 5

使用Java 8,您可以使用类似于以下内容的东西:

import static java.util.Comparator.comparing;

map.entrySet().stream()
   .sorted(comparing(Entry::getKey))
   .forEach(e -> doSomethingWithTheEntry(e));
Run Code Online (Sandbox Code Playgroud)

显然,这将涉及对未排序的键进行排序,这将需要一定的成本。因此,您需要确定是要使用TreeMap还是在需要时先支付费用,并继续使用HashMap。