private static final Map<String, List<RedisTemplate>> VEST_REDISTEMPLATE_MAP = new ConcurrentHashMap<>(3); 只能放三个key吗
时间: 2023-12-07 14:05:41 浏览: 99
<数据集>安全背心识别数据集<目标检测>
5星 · 资源好评率100%
`ConcurrentHashMap` 的构造方法 `ConcurrentHashMap(int initialCapacity)` 中的 `initialCapacity` 参数表示初始容量,而不是容量上限。因此,`private static final Map<String, List<RedisTemplate>> VEST_REDISTEMPLATE_MAP = new ConcurrentHashMap<>(3);` 中的 `3` 只是表示初始容量为 `3`,并不表示 `ConcurrentHashMap` 的容量上限。如果需要限制 `Map` 的容量上限,可以考虑使用 `LinkedHashMap` 的构造方法 `LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)` 中的 `accessOrder` 参数,将其设置为 `true`,并实现 `removeEldestEntry` 方法,例如:
```java
private static final int MAX_CAPACITY = 3;
private static final Map<String, List<RedisTemplate>> VEST_REDISTEMPLATE_MAP = new LinkedHashMap<String, List<RedisTemplate>>(MAX_CAPACITY, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<String, List<RedisTemplate>> eldest) {
return size() > MAX_CAPACITY;
}
};
```
这样,当 `Map` 中的键值对数量超过 `MAX_CAPACITY` 时,就会将最老的键值对删除。
阅读全文