Jag*_*mal 4 java collections hashmap
目前,我创建了一个HashMap,其中Object Id为键,值为1.并且该方法请求Object/Id并检查是否存在匹配的密钥.
这可以吗?或者,是否有更好的替代方案?
ben*_*din 10
这取决于你的意思是"是".
如果您的意思是对象标识(即object1 == object2
),那么您可以按照您描述的方式使用IdentityHashMap.
如果你的意思是对象相等(即object1.equals(object2)
),那么你可以使用HashSet而不是使用HashMap进行编辑.
如果您的对象使用Object 的默认实现equals()
并hashCode()
从Object继承,那么这是区别而没有区别:默认值将对象相等性实现为对象标识.
Phill Sacre通过暗示让我想起了什么List.contains()
.你不具备使用一组或Map实现.您可以使用List(例如ArrayList
).您可能会发现包含通过短列表执行线性搜索比维护散列结构的成本更低.
正如其他人已经注意到的那样,你可以实际使用HashSet或任何类型的Set.如果你使用自己的对象,请确保它们覆盖hashCode()
(HashSet所需)和equals()
(如果它们都覆盖它们,它们将适用于任何Set).