使用套装很方便。我喜欢如何“添加”(“删除”)元素到(从)集合。检查给定元素是否在集合中也很方便。
唯一的问题是,我发现如果集合已经有了这样的元素,我就无法在集合中添加新元素。是否有可能包含几个相同元素的“集合”。
答案 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”由元素的相等性定义(请参阅其equals
和hashCode
方法)。如果您需要重复项,请使用允许重复的Collection
,例如ArrayList
。