为什么在java集合框架中没有直接实现Bag?
2022-09-01 21:17:17
我不明白为什么JCF(Java集合框架)没有实现(允许重复而不维护顺序)。 性能将比 JCF 中当前的集合实现好得多。Bag
Bag
- 我知道如何在Java中实现。
Bag
- 我知道在Apache共享资源中可用。
Bag
- 我知道还有其他实现可以用作 a,但与 .
Bag
Bag
为什么Java Collections框架没有提供这样的直接实现?
我不明白为什么JCF(Java集合框架)没有实现(允许重复而不维护顺序)。 性能将比 JCF 中当前的集合实现好得多。Bag
Bag
Bag
Bag
Bag
Bag
为什么Java Collections框架没有提供这样的直接实现?
发布我的评论作为答案,因为它最好地回答了这个问题。
从这里提交的错误报告:
集合框架的维护者对设计和实现这些接口/类的热情并不高。我个人不记得需要一个。在现实世界中证明其价值后,更有可能在JDK之外开发的流行软件包被导入JDK。
支持 Bags 的需求在今天仍然有效。
番石榴支持它。还有GS-Collections。
目前,袋子违反了收集合同。许多方法都与当前的收集规则冲突。
“袋子是一个集合,它计算对象在集合中出现的次数。假设您有一个包含 的包。调用将返回 2,而调用将返回 。{a, a, b, c}
getCount(Object)
a
uniqueSet()
{a, b, c}
请注意,此接口违反了“集合”协定。其中许多方法中指定的行为与 Collection 指定的行为不同。不符合的方法在其摘要行中清楚地标有“(违规)”。此类的未来版本将指定与 Collection 相同的行为,不幸的是,这将破坏与此版本的向后兼容性。
boolean add(java.lang.Object o)
(Violation) Add the given object to the bag and keep a count.
boolean removeAll(java.util.Collection c)
(Violation) Remove all elements represented in the given collection, respecting cardinality.
请参阅链接以获取更多信息: 这里