当前位置: 首页 > 面试题库 >

番石榴中是否有对应的不可变的enumMap?

谢嘉
2023-03-14
问题内容

我最近了解了Java中EnumMap的好处,并希望将现有的替换ImmutableMap<OccupancyType, BigDecimal>为EnumMap。但是,我也想要ImmutableMap提供的不可变属性。

  • 番石榴中有可用的ImmutableEnumMap变体吗?
  • 在存储方面,哪个(EnumMap与ImmutableMap)的性能更好?
  • 我找不到两者的比较。如果有人可以将我指向某个链接或对这两种数据结构的效率提供一些见解,我将不胜感激?

问题答案:

番石榴的贡献者在这里。

番石榴目前没有ImmutableEnumMap变体,但如果有,它可能只是EnumMap。的包装。(也就是说,可能会有更好的不可变实现。)

EnumMap``ImmutableMap在任何情况下,其性能都将比basic好;很难或不可能击败。

(不过,我将提出一个问题来研究ImmutableMap为枚举键类型添加变体。)

更新:Guava
14添加了Maps.immutableEnumMap()



 类似资料:
  • 问题内容: 我已经使用番石榴已有一段时间了,并且对此感到非常信任,直到昨天我偶然发现了一个例子,这让我开始思考。长话短说,这里是: 运行此命令后,您可以看到 ImmutableList 内部的条目的值已更改。如果此处涉及两个线程,则一个线程可能碰巧看不到另一个线程的更新。 同样令我非常不耐烦的是,Effective Java中的Item15,第5点说: 在构造函数中制作防御程序副本 -看起来很合理

  • 问题内容: 我是番石榴的新手(老实说,我不是“新手”,我是这个主题的新手),所以我决定阅读一些文档,并在阅读本文时感到非常惊讶: 我不明白这种方法的意义。这意味着不要这样做: (如果myObject为null ,则可能会导致) 我应该用 这 将 抛出如果是空和返回,如果它不为空。 我很困惑,这可能是有史以来最愚蠢的问题,但是… 这有什么意义呢?在我能想到的任何情况下,这两行所做的事情与结果完全一样

  • 我非常喜欢Java8流和Guava的不可变集合,但我不知道如何将两者结合使用。 例如,如何实现将流结果收集到不可变多映射中的Java 8收集器? 奖励点:我希望能够提供键/值映射器,类似于Collectors.toMap()的工作方式。

  • 问题内容: 刚刚发现了Guava库项目。 这些与GWT兼容吗? 问题答案: 从该页面的介绍性PDF中, 您可以在…上使用这些库。 在JDK 6上 在Android上, 我们认为。需要志愿者来帮助我们进行测试。 在Google App Engine上, 我们认为。需要志愿者来帮助我们进行测试。 在GWT上-参差不齐! 由于GWT的JDK库支持 可能参差不齐,也许是2/3,所以到目前为止,这些库中的东

  • 我对番石榴很陌生(说实话,我不是“很新”,我是这个主题的新手),所以我决定浏览一些文档,在阅读本文时感到非常惊讶: 我不明白这个方法的意义。这意味着,与其这样做,不如: (如果myObject为null,这可能会导致) 我应该用 如果为空,这将抛出一个,如果它不是空,则返回。 我很困惑,这可能是有史以来最愚蠢的问题,但是... 这有什么意义?这两条线和我能想到的任何情况下的结果是完全一样的。 我甚

  • 问题内容: 我在commons- lang中使用了简单的DTO。现在,我尝试使用Google Guava代替Apache Commons库。我在番石榴找到了。但是如果班上有很多成员,这太冗长了。例如: 如果我使用commons-lang,则简单得多: 有什么更好的方法可以用Guava而不是commons-lang 来实现? 番石榴文件 问题答案: 我有番石榴的小招。我将 IntelliJ IDEA