目前,我创建了一个以 Object Id 作为键和 1 作为值的 HashMap。该方法要求提供 Object/Id 并检查是否有匹配的键。
那样可以么?或者,是否有更好的选择?
最佳答案
这取决于你所说的"is"是什么意思。
如果您的意思是对象标识(即 object1 == object2
),那么您可以按照您描述的方式使用 IdentityHashMap 。
如果您的意思是对象相等(即 object1.equals(object2)
),那么您可以只使用 HashSet 而不是使用 HashMap 四处游荡。
如果您的对象使用从 Object 继承的 equals()
和 hashCode()
的默认实现,那么这是一个没有区别的区别:默认值将对象相等性实现为对象标识。
Phill Sacre 通过建议 List.contains()
提醒了我一些事情。您不必使用 Set 或 Map 实现。您可以使用列表(例如 ArrayList
)。您可能会发现,包含通过短列表执行线性搜索比维护散列结构的成本更低。