有没有一种简洁的方法在Java中生成DoubleKey Map。我在这里找到了几个答案,但没有一个能满足我的要求。
要求:
比方说 K1,K2,V
只有给定 K1,K2 才能定位唯一值。通过这种方式创建以下内容不起作用。
Map<K2, K1> m2; Map<K1, V> m1;//here K1 needs have multiple V's.
如果通过 K1 搜索,它应该给出
Map<K2,V>
,反之亦然。
我唯一能做的就是创造
Map<K1,Map<K2,V>>
Map<K2,Map<K1,V>>
并且每次都维护两者。代码看起来很乏味。
即使仅使用这个解决方案,一旦扩展到三重 Key Map,那将是一场灾难。
最佳答案
如果第三方库是公平的游戏,这听起来像 Guava 的 Table
将会是完美的。 Table<R, C, V>
表示具有“行”键和“列”键的表。您可以使用get(row, column)
获取基于两个键的值,或者您可以使用 row(r)
或column(c)
获得 Map
对于适当的行或列,或者您可以使用 rowMap()
获得 Map<R, Map<C, V>>
或columnMap()
获得 Map<C, Map<R, V>>
.
如果您无法使用第三方库,那么您将无法找到比嵌套 Map
更好的解决方案您已经提到过的解决方案。
关于java - DoubleKey Map 实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17798515/