如何存储具有重复项的整数集

时间:2013-09-02 11:04:34

标签: java data-structures

我想存储一组允许重复的整数,例如1, 5, 3, 3, 4, 6

如果我使用HashSet,则重复项将丢失。 List感觉不对,因为商品没有隐含的订单。我需要能够快速从中间删除项目,排除ArrayListLinkedList仍然暗示物品有一些我不喜欢的顺序。

我应该使用另一种数据结构吗?或者我应该告诉HashSet根据引用相等性来比较Integer吗?

我知道我可以通过几种方式解决这个问题,但我对最“正确”的解决方案更感兴趣。

4 个答案:

答案 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?