【发布时间】:2022-01-12 17:26:24
【问题描述】:
我正在尝试了解在 stackoverflow 上找到的以下语句的实现
可以使用BitSet,当你遍历值的数组时,将相应的位设置为true。然后你可以遍历该位集并在发现某个位设置为真时输出相应的值
我知道从array 或int 中删除重复项的非常简单的方法。但是很难理解如何使用本网站上的上述声明来实现它。
参考链接
https://stackoverflow.com/questions/3667543/remove-duplicates-from-a-large-integer-array-using-java
谁能建议如何实现它?
【问题讨论】:
-
如果你使用
boolean的数组呢? -
@ScottHunter,如何帮助删除重复项?
-
BitSet 是一个集合,这意味着每个值只存在一次。第一遍将数组中的所有值(必须包含整数)添加到集合中。然后在第二遍中使用 BitSet 代替数组。 BitSet 包含数组中的唯一值。如果目标是另一个数组,则需要创建一个数组并将值从 BitSet 复制回来。请注意,链接的文章对整数值有限制;如果您的整数可以取任何值,它可能对您不起作用。我不认为 BitSet 是稀疏的,所以它可能必须一直分配位直到你的最大值。
-
你可以使用任何类型的 Set;正如@ewramner 指出的那样,BitSet 是一种特殊的实现,它施加了某些限制。
-
@ScottHunter 要清楚,
BitSet没有实现Set,但可以认为它具有类似集合的语义。