Java 番石榴中的地图

Java 番石榴中的地图,java,data-structures,collections,guava,Java,Data Structures,Collections,Guava,我有一些带有Map对象的代码,它们可以工作(它被实例化为HashMaps的HashMap),但我想知道是否有更好的方法在Guava中表示此数据结构 我曾考虑过Multimap,但尽管番石榴中有ListMultimap和SetMultimap,但我没有发现“MapMultimap” 我也检查过,看起来更像它,但它的名字让我不舒服:我拥有的绝对不是一张桌子,而是一棵树。(第二个键之间没有重叠) 有没有更好的番石榴替代品,或者我应该坚持使用Map?看看番石榴的界面 其示例似乎与您的用例有很多重叠: 通

我有一些带有
Map
对象的代码,它们可以工作(它被实例化为HashMaps的HashMap),但我想知道是否有更好的方法在Guava中表示此数据结构

我曾考虑过
Multimap
,但尽管番石榴中有
ListMultimap
SetMultimap
,但我没有发现“MapMultimap”

我也检查过,看起来更像它,但它的名字让我不舒服:我拥有的绝对不是一张桌子,而是一棵树。(第二个键之间没有重叠)

有没有更好的番石榴替代品,或者我应该坚持使用
Map

看看番石榴的界面

其示例似乎与您的用例有很多重叠:

通常,当您试图在同一时间索引多个键时 随着时间的推移,你会得到像地图这样的东西,这是丑陋和笨拙的使用。番石榴 提供支持此用例的新集合类型Table 对于任何“行”类型和“列”类型


表格
似乎非常适合您的需要。但是请确保选择了正确的实现。特别是,如果您的第二个键都是不同的(表中的列),那么生成的表将是稀疏的,您应该考虑到这一点来管理内存使用

因此,您应该避免使用ArrayTable,但可以使用任何其他实现。请注意,
immutable
一词优化了稀疏和密集数据集的实现


如果您的
是立即构建的,那么如果表在多个线程之间共享,您可以使用一个表,并从该优化中获益,还可以简化您的生活。

内部的
映射
是什么样子的?用一个合适的类替换它怎么样,这样你就可以有一个
映射了?@Philipp Reichart:那么我的SomeObject需要一个内部映射,所以我不知道我的代码会变得如何简单…这就是为什么我问内部映射看起来如何:如果它们都有相同的键(例如
“firstName”
“lastName”
,…),您可以将它们替换为类的实例,如
Person{String firstName;String lastName;…}
。如果每个内部地图都不一样,这当然行不通。@Philipp Reichart:我明白了。内部映射是不同的,不相关。我有一个类似的用例,只是上面的一个步骤。它的MapI我不确定,你可以问另外一个问题。