Java中是否存在使用generics(域模型,而不是持久层)的多对多集合?

我似乎在Google中使用了错误的搜索字词…

我为多对多关联编写了一个通用类,但我猜这已经完成了。 它很可能存在于比我自己更好的实现中。 这是我第一次尝试编写generics类。

为了更好地了解我正在寻找的东西,我收录了一些我自己的片段:

我用2个哈希映射支持它:

private final Map<T, List> ssForTs = new HashMap<T, List>(); private final Map<S, List> tsForSs = new HashMap<S, List>(); 

这是实例化:

 new ManyToManyAssociations(); 

一些可用的方法:

  • public void addAssociation(T t,S s)
  • public void removeAssociation(T t,S s)
  • public List getListOfTs()
  • public List getListOfSs()
  • 公共列表 getTsForSs(S s)
  • 公共列表 getSsForTs(T t)

这些方法的名字很差……我道歉。

基本用法是:我可以很容易地找到所有S for T和反向。

您是否可以将链接发布到已包含此function的抛光库中?

到目前为止,这是一个比我想象的更小的问题。 我所知道的两个Java Collections扩展是duffymo提到的Google和Apache Commons Collections 。 没有多对多的地图。 在谷歌的术语中,它将是一个BiMultiMap ; 在Apache中,它将是BidiMultiMapMultiBidiMap

看起来Apache Commons Multimap可能很有用。

编辑:除了它是一对多,而不是多对多。 但是,使用它代替Map>Map>或作为参考仍然可能很方便。