由于设置条目仅由属性(hashCode()+ equals())的子集区分,因此有时需要对集合中包含的原始对象进行操作,这是不可能的java.util.Set.我想出的唯一选择是:Map<T, T>- 不是一个非常简洁的解决方案.
收集框架中还有其他替代方案吗?要求是:O(1)获取时间,基于hashCode() + equals()结果没有重复.
不是java.util.Collections本身,而是使用Google Guava,您可以从给定的Iteratorusing中检索任何元素Iterables.get。
通常我不会提倡外部库,但鉴于 Guava 非常强大和有用,我认为它没有问题。
或者,您可以使用自己的实现来迭代该集合。
此外,我在这里发现了一个非常有趣的线程来解释这种行为。