首页 > 解决方案 > hashset和hashmap的多重关系

问题描述

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

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

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

HashMap是一个key -> value(key to value)映射,例如{a -> 1, b -> 2, c -> 2, d -> 1}

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

并且 hashMap 是 1 key to 1 value 是一对一的关系

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

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

HashSet 和 HashMap 可以同时用于一对多和多对多关系吗?

标签: java

解决方案


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

但是,当我需要创建“一对多”关系时,我会求助于

 HashMap<A,HashSet<B>>

这样做确实对关系的来源施加了唯一的约束。为避免这种情况,可以使用 HashMap 反向映射它

 HashMap<B,A>

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

 List<{A,HashSet<B>}> 

WrapperObject 有属性标识符,HashSet<>。这里的标识符不一定是唯一的。

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

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


推荐阅读