0

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

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

我应该为此使用另一种数据结构吗?或者我应该告诉基于参考平等HashSet进行比较?Integer

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

4

4 回答 4

5

如果这种依赖性不是问题,您可以使用Guava 的 multiset 。作为奖励,番石榴还有许多其他有用的通用实用程序。

于 2013-09-02T11:06:41.650 回答
3

LinkedList是要走的路。如果需要对其进行排序,可以使用Collections.sort();

于 2013-09-02T11:07:03.240 回答
0

使用多集风格的集合。由于某种原因,Java 库中缺少它,因此您需要Collection自己直接实现或使用 Google Guava 的 MultiSet。

列表很好,开销也不错。如果您不关心订购,请不要使用它。

于 2013-09-02T11:07:04.373 回答
0

List可以正常工作,它是解决您的问题的最简单的解决方案,没有任何主要缺点,而且这在大多数情况下对一些优雅但复杂的问题有利。

除此之外,请参阅此答案Set 集合中的重复值?

于 2013-09-02T11:11:34.253 回答