在 Java 中声明 ConcurrentHashMap 时是否必须添加 final 关键字

should I must add final keyword when declaring a ConcurrentHashMap in Java

当我像这样在 Java 8 class 中声明一个 ConcurrentHashMap 时:

private final static ConcurrentHashMap<Long,Integer> signRatioMap = new ConcurrentHashMap();

我发现没有 final 它不能正常工作。我应该添加最终关键字吗?有什么优势?

Final 关键字除了防止变量被重新赋值外什么都不做。如果您不需要重新分配变量,请将其设为最终变量。

一般来说,创建变量 final 是一种良好的编码习惯,也可能带来一些性能优势(有关详细信息,请参阅 )。

但是你的情况略有不同,因为Java实现的hash map只能增长其内部结构而不会缩小,从而导致其扫描性能不断恶化。所以如果你的地图要经常更换,最好时不时重新制作,那样的话就不能final.