gpt4 book ai didi

java - "identity-based Map"和 "topology-preserving object graph transformations"是什么意思?

转载 作者:行者123 更新时间:2023-11-29 07:31:26 26 4
gpt4 key购买 nike

JavaTutorialsIdentityHashMap 上有这样的话:

IdentityHashMap is an identity-based Map implementation based on a hash table. This class is useful for topology-preserving object graph transformations, such as serialization or deep-copying. To perform such transformations, you need to maintain an identity-based "node table" that keeps track of which objects have already been seen. Identity-based maps are also used to maintain object-to-meta-information mappings in dynamic debuggers and similar systems. Finally, identity-based maps are useful in thwarting "spoof attacks" that are a result of intentionally perverse equals methods because IdentityHashMap never invokes the equals method on its keys. An added benefit of this implementation is that it is fast.

谁能用简单的英语解释一下两者的意思

  • “基于身份的 map ”和
  • “拓扑保持对象图转换”?

最佳答案

“基于身份的Map”表示通过==比较键用于身份,而不是 equals为了平等。

“保留拓扑的对象图转换”意味着当您有一些对象结构并将其转换为另一个对象结构时,您希望保留拓扑,即原始图中的节点与目标图中的节点之间的关系。为此,您需要通过标识而不是相等来映射节点。

考虑以下示例。你有 Foo 的树要转换为树的类(通过 Foo parent 字段定义的树)Bar类(再次 BarBar parent )字段。对于每个 Foo你需要创建一个新的 Bar但只有一次。为了跟踪该映射,您将创建一个 Map<Foo, Bar> .您还将使用此 map 查找父项 Bar

问题是,如果两个 Fooequals你可能找错了 parent Bar从跟踪 map 中获取它时。这将破坏 Bar 树中的拓扑。 s,你只会把节点挂到错误的父节点上。

为避免这种情况,您需要进行身份比较,而不是相等。这就是IdentitiyHashMap

关于java - "identity-based Map"和 "topology-preserving object graph transformations"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41588440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com