目前,我创建了一个 HashMap,其中 Object Id 作为键,1 作为值。该方法会询问 Object/Id 并检查是否存在匹配的键。
可以吗?或者,是否有更好的选择?
最佳答案
这取决于你所说的"is"是什么意思。
如果您指的是对象身份(即 object1 == object2
),那么您可以使用 IdentityHashMap按照您描述的方式。
如果您指的是对象相等(即 object1.equals(object2)
),那么您可以只使用 HashSet而不是使用 HashMap 胡闹。
如果您的对象使用 equals()
的默认实现和 hashCode()
继承自 Object,那么这是一个没有区别的区别:默认值将对象相等性实现为对象标识。
Phill Sacre通过建议 List.contains()
让我想起了什么。您不必使用 Set 或 Map 实现。您可以使用列表(例如 ArrayList
)。您可能会发现,让包含通过短列表执行线性搜索比维护散列结构的成本更低。
关于java - 检查一个对象是否来自另一个(比如固定的)对象列表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/460602/