我有一些代码 Map<String, Map<String, String>>
对象,它有效(它被实例化为 HashMap 的 HashMap),但我想知道是否有更好的方法在 Guava 中表示这种数据结构。
我考虑过Multimap
, 但虽然有 ListMultimap
和 SetMultimap
在 Guava 中,我没有找到“MapMultimap”。
我也检查了Table ,这似乎更像它,但它的名字让我不舒服:我拥有的绝对不是一张 table ,而是一棵树。 (第二个键之间没有重叠)
是否有更好的 Guava 替代品,还是我应该坚持使用 Map<String, Map<String, String>>
?
最佳答案
Table
似乎很适合您的需要。但请确保您选择了正确的实现方式。特别是,如果您的第二个键都是不同的(表中的列),则生成的表将是稀疏的,您应该考虑到这一点来管理内存使用。
因此您应该避免使用 ArrayTable,但可以使用任何其他实现。请注意 docs提到 ImmutableTable
已针对更稀疏和更密集的数据集优化实现。
如果您的 Table
是一次性构建的,您可以使用 ImmutableTable.Builder
如果表在多个线程之间共享,并从这种优化中获益并简化您的生活。
关于java - Guava map 中的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14645525/