如果你想要一致的语义,你就必须自己推出。实现它的最简单方法是通过Map<K, List<V>>
。通过这种方式,您可以将一个键映射到多个值。
然而,关于语义,您需要考虑一些事情。例如,假设您有以下多重映射:
a -> [1, 2, 3]
b -> [4, 5]
上面的大小将报告为 2,但如果您认为 Map 可以表示为这样,也可以解释为 5:
a -> 1
a -> 2
a -> 3
b -> 4
b -> 5
这也会影响您返回的值。返回会更有意义[1, 2, 3, 4, 5]
并不是[[1, 2, 3], [4, 5]]
。这也适用于条目集;您可能想要返回如上所示的对。
因此,一种可能的实施方式是实施Map<K, V>
并使用背衬Map<K, List<V>>
。然后,您必须在遵守多重映射语义的同时实现各种方法。
如果您不关心语义,而只是想要将单个键映射到多个值的能力,则可以使用Map<K, List<V>>
直接并仍然获得您需要的东西。