LinkedIdentityHashSet

Raf*_*ter 13 java collections

我知道IdentityHashSet(通过Collections#newSetFromMap(Map))和LinkedHashSet.但是,我需要的是两者的结合,a LinkedIdentityHashSet.我在网上找不到任何现成的解决方案.有谁知道如何调整这个?

谢谢你的建议!

Tom*_*ine 7

那里的实施技术不能很好地结合.LinkedHashMap将链接列表添加到地图的条目对象.IdentityHashMap使用探测技术,因此避免任何入口对象.

有几种方法可以为集合/地图添加"身份"特征.

  • 使用final equalshashCode方法强制键类型正确运行.真的所有参考类型都应该有这个,但没关系.
  • 如果您无法修改equals并且hashCode可以修改该类,请添加一个类的final字段,final该类包含final对您要用作键的类型的引用.使用新字段作为键.
  • 将适配器对象存储在集合/映射中.您需要为每个查找创建一个新的适配器实例.它只是有equals/ hashCode方法调用==/ System.identityHashCode原始对象上.