Java中的N对N索引关系

Java中的N对N索引关系,java,collections,Java,Collections,可能重复: 我需要一个实现N对N关系的数据结构。类似于带有调用的Map: getValues(Foo foo): Collection<Bar> getValues(Bar bar): Collection<Foo> getValues(Foo-Foo):集合 getValues(条形):集合 以及通常的管理方法,如: removeKey(Foo) [remove all the <Foo,X> entries] removeValue(Bar) [

可能重复:

我需要一个实现N对N关系的数据结构。类似于带有调用的
Map

getValues(Foo foo): Collection<Bar>
getValues(Bar bar): Collection<Foo>
getValues(Foo-Foo):集合
getValues(条形):集合
以及通常的管理方法,如:

removeKey(Foo)   [remove all the <Foo,X> entries]
removeValue(Bar) [remove all the <X,Bar> entries]
removeKey(Foo)[删除所有条目]
removeValue(Bar)[删除所有条目]

是否有我可以使用的库,或者我应该实现它?谢谢

为什么不创建两个地图,每个地图从键到值集合:

Map
Map


如果您希望创建一个类来包装它们(可能对类型使用一些泛型以便可以轻松地重用),并提供所需的方法,那么另一种方法当然是创建一个查找函数。做双重簿记总是一种风险。如果你必须创建一个类来包装这两个数据结构,那么你可以正确地测试它。据我所知,关系是双向的,这意味着x->y与y->x不相等,因此没有双重簿记。