1

有几次我使用对象作为映射中的键,我这样做是为了存储有关该特定对象的元数据。我一直WeakMap为此使用 a ,因为当它用作键的对象被垃圾收集时,映射中的条目会自动被垃圾收集的好处。

存储元数据是我能想到的将对象作为映射中键的唯一用例,但我很好奇是否还有其他将对象作为键的用例,如果在这些情况下,您会MapWeakMap.

4

1 回答 1

2

考虑一个用于建模图的实现。让我们假设图的节点可以是用户定义的对象。图形实现需要存储这些节点,但也需要将它们与其他数据(例如边(想想邻接“字典”))关联起来。我们需要一个 Map,因为我们还必须能够遍历所有节点(例如 networkx.github.io 所做的(在 Python 中)和我的 JS 端口)

即使我们不需要遍历节点,如果没有其他对它们的引用,我们可能也不希望它们被垃圾收集,因为这会默默地破坏图。

- 菲利克斯·克林

于 2016-06-20T12:31:56.317 回答