在这段代码中,我将100个随机元素混洗,而不是添加100个带有重复项的随机元素,并返回10个唯一键。我怎样才能做到这一点?
public static void main(String[] args) {
ArrayList<Integer> uniqueKeys = new ArrayList<Integer>();
for (int i = 0; i < 101; i++) {
uniqueKeys.add(new Integer(i));
}
Collections.shuffle(uniqueKeys);
for (int i = 0; i < 10; i++) {
System.out.println(uniqueKeys.get(i));
}
}
答案 0 :(得分:1)
我建议使用Set和Random的组合。使用Set,你将摆脱重复。使用Random,您将获得(伪)随机数。
final int KEYS_COUNT = 100;
final int MAX_KEY_VALUE = 1000;
Set<Integer> setOfKeys = new HashSet<>();
Random random = new Random();
while (setOfKeys.size() <= KEYS_COUNT) {
setOfKeys.add(random.nextInt(MAX_KEY_VALUE));
}
Set setOfKeys
将包含100个唯一的随机数,其值小于1000.然后,您可以使用toArray()方法从Set中生成数组。
如果您将KEYS_COUNT
设为MAX_KEY_VALUE
,则值不会随机变化,只会进行随机播放。