JAVA - MultiMaps和entryset()

时间:2012-06-18 10:25:33

标签: java data-structures collections map synchronization

一个有希望的快速问题:

我打算构建一个MultiMap样式结构,内部结构为Map>结构,并重写方法以适当的方式重定向到内部映射和列表(因此这表现为用户的multiMap)。当然,还有一些额外的功能可能,特别是如果我这样的版本结构为Map>或者地图>,我可能会在我使List版本工作后这样做。

我关注的是entrySet()和类似的方法:如何覆盖这些以使用相同的内部数据并通过remove方法传播?

我怀疑这些集合是用它们的remove函数重定向到map的remove函数构建的,所以如果我实现了我的MultiMap的remove函数,它就会表现出来。谁能证实这一点?

地图集合中的一些静态函数也让我担心。 Collections类如何生成不可修改或同步的表单,是否有办法确保我的MultiMap与此兼容?

2 个答案:

答案 0 :(得分:1)

我想这取决于你将如何创建多图。

我做了类似的事情并且基本上创建了一个MultiMap作为Map,其中Collection是值。 通过在内部使用地图,我的MultiMap是一个普通的Map,所有的工具基本上都可以继续工作。

public class MultiMap<K, V, T extends Collection<V>> implements Map<K, T>

答案 1 :(得分:1)

您是否考虑过使用现有的Multimap而不是实施新的Multimap?

例如,请查看Google Guava Multimap,并在Multimaps查看静态实用程序方法......