java - 检查一个对象是否来自另一个(比如固定的)对象列表的最佳方法是什么?

标签 java collections hashmap

目前,我创建了一个 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/

相关文章:

java - NavigableMap subMap/headMap/tailMap 是否有通用实现?

Java:如何将 String[] 转换为 List 或 Set

java - 按值的降序对 Map 进行排序

java - 使用 HashMap 的 Set 迭代器不会产生值/键?

java - 我的(字符串).split ("=");不工作吗?

java - 在 selenium 中测试页面加载时间的正确方法?

java - 无法实例化设置 fragment

java - 为图像编辑器快速、可靠地保存/加载文档状态

java - Eclipse war 导出 : optimize for a specific server runtime

java - 关于采集框架