Map VS Complex Key的多个索引

时间:2019-04-17 08:56:06

标签: java hashmap

我想要Java中的索引集合,但是我的最终Object需要由许多键索引。

我现在有一个这样的集合:

   Map<String, Map<String, Map<String, Map<String, Map<String, Object>>>>> objects

我在问这是否有效,还是最好构建一个更复杂的键类型以包含所有5个字符串键。

PS: 对不起,我没有解释整个事情。 当我尝试使用此集合获取对象时,指向该对象的路径可能是:(在第1个位置调用AX通用密钥,在第2个位置调用BX通用密钥,依此类推...)  A1-> B1-> C1-> D1-> E1。但也可以是A1-> B2-> C1-> D1-> E1。

所以我要问的是,一个覆盖的复杂键是否等于将B2和B1匹配为一个,并且匹配两个描述的路径,它比嵌套Map更有效。

2 个答案:

答案 0 :(得分:0)

这取决于您的需要。您将只访问最多嵌套的对象,一次访问一个,还是访问某些外部映射。例如:假设objects是房屋,而地图关键字是地址的不同部分。第一个是国家,然后是城市,然后是街道,然后是门牌号码。

如果您希望能够获得X城市中的所有房屋,那么您可能想使用嵌套地图(如您的示例)。使用复杂的Address类作为键,实际上是不可能的。

如果您不需要该功能,并且将始终使用所有部件,那么复合类将更加方便

编辑:

编辑后,似乎复合类将是一个更好的选择。调用具有有意义参数名称的构造函数(如某些IDE所示)比链接5次.get(String)更好。

答案 1 :(得分:0)

如果您不需要树形结构,并且总是想找到一个存储的对象。我建议使用一个复合键。您可以使用定界符作为键来连接字符串。

对于二维,可以使用Guava的表格:https://github.com/google/guava/wiki/NewCollectionTypesExplained#table