java.util.Mapvalues()方法性能

Ali*_*nik 3 java collections performance dictionary hashmap

我有一张这样的地图,其中有数百万个条目:

private final Map<String, SomeItem> tops = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

我需要获取值列表,这可以通过调用 java.util.Map values()方法来完成。

每次调用方法时都会Collection创建值values(),还是从性能角度预先计算值?

由于我Map有几百万个元素,我不想每次values()调用时都创建新的列表对象。

ern*_*t_k 5

Map.values()下面是in的复制实现java.util.HashMap

public Collection<V> values() {
    Collection<V> vs = values;
    if (vs == null) {
        vs = new Values();
        values = vs;
    }
    return vs;
}
Run Code Online (Sandbox Code Playgroud)

这清楚地表明,除非必要,否则不会创建值集合。因此,不应该有因调用而造成的额外开销values()