我可以拥有一个包含相同元素的集合吗?

时间:2010-03-28 13:23:05

标签: java collections unique set

使用套装很方便。我喜欢如何“添加”(“删除”)元素到(从)集合。检查给定元素是否在集合中也很方便。

唯一的问题是,我发现如果集合已经有了这样的元素,我就无法在集合中添加新元素。是否有可能包含几个相同元素的“集合”。

4 个答案:

答案 0 :(得分:4)

您必须使用MultiSet或HashMap,以节省元素数量。

P.S。使用hashmap,您仍然使用O(log n)操作添加/删除

http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multiset.html

答案 1 :(得分:2)

如果您想要重复,Set可能不是您的最佳选择。集合by definition不允许重复:

  

不包含重复元素的集合。更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)和最多一个空元素。正如其名称所暗示的,该界面对数学集抽象进行建模。

除非你有一个真正需要使用Set的复杂用例(在这种情况下你可以像上面描述的@Frostman那样使用MultiSet),你可能最好只使用List

答案 2 :(得分:1)

如果元素相同,则无需多次存储元素。如果您想跟踪每个元素的实例数,最好使用Map

答案 3 :(得分:0)

根据定义,Set不能包含重复元素。 “Duplicate”由元素的相等性定义(请参阅其equalshashCode方法)。如果您需要重复项,请使用允许重复的Collection,例如ArrayList