给定一个集合X,使用java如何从中选择两个随机项目,以便我可以增加一个项目并同时减少另一个项目。 提前谢谢。
答案 0 :(得分:0)
我检查集合的大小,然后随机选择两个"索引"在它下面。当然,并不是Java中的Set
元素没有真正的索引(至少不是List
拥有它们的意义,而是使用get(int)
方法,但这种行为可以通过迭代Set
并计算步数来模拟:
Set<Object> set = ...;
Random random = new Random(); // or some better RNG
int size = set.size();
int step1 = rand.nextInt(size - 1);
int step2 = rand.mextInt(size - step1);
Iterator<Object> iter = set.iterator();
for (int i = 0; i < step1 - 1; ++i) {
iter.next();
}
Object rand1 = iter.next();
for (int i = 0; i < step2 - 1; ++i) {
iter.next(); // Note, this is the SAME iterator!
}
Object rand2 = iter.next();