Каков наилучший способ получить случайный элемент из коллекции? Я слышал итерацию в лучшем случае, так что я сделал следующее:Получить случайную запись из коллекции
Collection<Integer> c = new HashSet<Integer>();
Random r = new Random();
for (int i = 0; i < 100000; i++){
c.add(r.nextInt());
}
Iterator<Integer> i = c.iterator();
int random = r.nextInt(c.size());
int num = 0;
int count = 1;
while(i.hasNext()){
num = i.next();
if (count == random){
break;
}
count++;
}
System.out.println(num);
Он отлично работает, насколько я могу сказать и занимает всего несколько миллисекунд, чтобы закончить. Тем не менее, мне сказали, что вышеперечисленное является чрезмерной проблемой. Я знаю, что вы можете конвертировать коллекцию в массив или на Java 8 вы можете использовать потоки.
Что вы пытаетесь достичь с помощью этого кода? – YoungHobbit
Вышеприведенный код - это просто тест, чтобы узнать, какой лучший метод. –
'Collections.shuffle' и получить первый (если после этого вы не заботитесь о порядке коллекции) –