hashset和hashmap

时间:2018-05-24 03:43:59

标签: java

我对两个哈希集合的多重关系感到困惑,

从我在这里的另一篇文章中看到的,

HashSet是一个集合,例如{1,2,3,4,5}

HashMap是一个关键 - >值(键值)映射,例如{a - > 1,b - > 2,c - > 2,d - > 1}

这看起来像hashset是一个绑定到一组数据的唯一ID,例如。 1 2 3 4 5.看起来像是一对多的关系

hashMap是1个值的1个键,它是一对一的关系

在谷歌搜索确认我的怀疑之后,我最终感到困惑。 在这篇文章中,https://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/collections.html

它显示了在一对多和多对多关系中使用的hashset, 有帖子显示两者都使用的hashmap。

可以在一对多和多对多关系中使用HashSet和HashMap吗?

1 个答案:

答案 0 :(得分:1)

谈论他们打算使用的实际方式,不! 对于关系A-> B

然而,当我需要创建“一对多”关系时,我求助于

 HashMap<A,HashSet<B>>

这样做会对关系源强制执行唯一约束。为避免这种情况,可以使用HashMap反向映射它

 HashMap<B,A>

在多对多关系中,没有一个唯一键可用于访问一对元素。所以这基本上意味着整个数据集只是一个数据对列表。

 List<{A,HashSet<B>}> 

WrapperObject具有属性标识符,HashSet&lt;&gt;。 这里的标识符不一定是唯一的。

如果您正在使用@ManyToMany注释,Spring / Ebean在内部使用它,您不必担心表示映射,因为它在帖子的示例中可见。您需要从单个实例的角度设置映射。

为您自动处理整个实例数组。