我想存储一组允许重复的整数,例如1, 5, 3, 3, 4, 6
。
如果我使用HashSet
,则重复项将丢失。
List
感觉不对,因为商品没有隐含的订单。我需要能够快速从中间删除项目,排除ArrayList
。 LinkedList
仍然暗示物品有一些我不喜欢的顺序。
我应该使用另一种数据结构吗?或者我应该告诉HashSet
根据引用相等性来比较Integer
吗?
我知道我可以通过几种方式解决这个问题,但我对最“正确”的解决方案更感兴趣。
答案 0 :(得分:5)
如果此依赖项不是问题,您可以使用Guava's multiset。作为奖励,番石榴还有许多其他有用的通用工具。
答案 1 :(得分:3)
LinkedList
是要走的路。
如果您需要对其进行排序,则可以使用Collections.sort()
;
答案 2 :(得分:0)
使用多集合式集合。由于某些原因,它在Java库中缺失,因此您需要自己直接实现Collection
或使用Google Guava的MultiSet。
列表很好,开销也不错。如果您不在乎订购,请不要使用它。
答案 3 :(得分:0)
List
可以正常使用,它是解决您问题的最简单方法,没有任何重大缺点,这大部分时间都有利于some elegant but complex ones。
除此之外,请参阅此答案Duplicate values in the Set collection?