【发布时间】:2010-03-28 13:23:04
【问题描述】:
我用一套很方便。我喜欢如何将一个元素“添加”(“删除”)到(从)集合中。检查给定元素是否在集合中也很方便。
唯一的问题是,我发现如果集合中已经有这样的元素,我无法将新元素添加到集合中。是否可以有可以包含多个相同元素的“集合”。
【问题讨论】:
-
为什么要拥有相同的元素?
标签: java collections unique set
我用一套很方便。我喜欢如何将一个元素“添加”(“删除”)到(从)集合中。检查给定元素是否在集合中也很方便。
唯一的问题是,我发现如果集合中已经有这样的元素,我无法将新元素添加到集合中。是否可以有可以包含多个相同元素的“集合”。
【问题讨论】:
标签: java collections unique set
您必须使用 MultiSet 或 HashMap 来保存元素的数量。
附言使用 hashmap,您仍然使用 O(log n) 操作进行添加/删除
http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multiset.html
【讨论】:
如果您想要重复,Set 可能不是您最好的集合选择。集合,by definition,不允许重复:
不包含重复元素的集合。更正式地说,集合不包含一对元素 e1 和 e2,例如
e1.equals(e2),并且最多包含一个空元素。正如其名称所暗示的,此接口对数学集抽象进行建模。
除非您有一个真正需要使用 Set 的复杂用例(在这种情况下,您可以使用上面 @Frostman 描述的 MultiSet),您最好只使用 List。
【讨论】:
如果元素相同,则无需多次存储元素。如果您想跟踪每个元素的实例数,最好使用Map。
【讨论】:
根据定义,Set 不能有重复的元素。 “重复”由元素的相等性定义(参见其equals 和hashCode 方法)。如果要重复,请使用允许重复的Collection,例如ArrayList。
【讨论】: