用 Java 开发,我需要一个数据结构来选择 0 到 999999 之间的 N 个不同的随机数?
我希望能够快速分配 N 个号码并确保它们不会重复自己。
主要目标是不使用太多内存并保持合理的性能。
我正在考虑使用BitSet但我不确定是否会影响内存。有人可以告诉我这个类的内存要求是否与位数或设置位数有关?设置/测试的复杂性是多少?
更新:感谢到目前为止的所有回复。
我想我在这个 Q 的最初措辞中有这个,但是当我第一次看到 BitSet 类时删除了它。无论如何,我想添加以下信息:目前我正在查看最多几千的 N(很可能在 1000-2000 左右)和 0 到 999999 的数字范围。但我希望我的选择考虑到该选项将范围增加到 8 位(即 0 到 99 999 999),同时将 N 保持在大致相同的范围(可能增加到 5K 或 10K)。因此,“使用值”非常稀疏。