java - ConcurrentHashMap 超过容量

标签 java concurrenthashmap

我是 ConcurrentHashMap 的新学习者。现在我编写以下代码:

ConcurrentHashMap<Integer, Integer> map = new ConcurrentHashMap(1);

for(int i=0; i<10; i++){
    map.put(i,i);
}

//print map

我将ConcurrentHashMap的初始容量设置为1,之后我将10个值放入其中。所以在我看来,ConcurrentHashMap只会接收第一个,拒绝其余的9个;然而,当我打印 map 时,我发现所有 10 个值都已存储在 map 中。那么是没有使用初始容量参数还是ConcurrentHashMap达到容量后可以自行增加?

最佳答案

JVM 自动增加大小。容量仅用于初始化将映射支持到特定大小的任何集合。如果您确定要向其中添加至少 X 个项目,则将其初始化为该容量。 JVM 将根据需要为您调整其大小。

关于java - ConcurrentHashMap 超过容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541210/

相关文章:

java - Jackson 的 @JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type") 读取除了 "type"以外的所有 JSON 字段

c++ - 如何将 tbb concurrent_hash_map 转换为常规 std::map?

java - ConcurrentHashMap putIfAbsent : atomicity when followed by a get() call

java - ConcurrentHashMap 中的可变语义

java - java.util.concurrent.ConcurrentHashMap.putIfAbsent 是否需要在同步块(synchronized block)中?

java - 如果我们将空键添加为对象,为什么同步对象会给出空指针异常?

java - 如何在 JFreeChart 条形图中更新数据集

java - 使用java执行复杂的进程命令行

java - 在 Java 中用什么代替 finalize()

java - 使用java和htmlunit获取vbulletin中用户的用户组