map 和 ImmutableMap 的区别

vai*_*ote 2 java collections dictionary guava

我在支付网关公司工作,在分析代码时遇到了 ImmuatbleMap 对象。我想知道有关的所有细节。它是什么?它与地图相比有什么优势?核心 java 是否支持 ImmuatbleMap?

rro*_*y86 6

ImmutableMaps 是在 Guava 中引入的,它们符合 Java 的MapAPI,但有额外的保证。

简而言之:

  • 您不能添加、替换或删除条目
    • 如果条目对象没有可变状态,则它们是“完全不可变的”
    • 因此,它们是线程安全的
  • nulls 被禁止
  • 与通常的 Java 集合相比,(稍微)更节省时间和空间
  • 迭代顺序是可预测的

有关完整信息,请参阅Guava 的指南javadoc,ImmutableCollection其中适用于地图和其他 Guava 的不可变集合。

  • 您可以添加指向 https://github.com/google/guava/wiki/ImmutableCollectionsExplained#why 的链接,其中还提到了“节省时间和空间”。 (2认同)