Мне нужно выбрать случайный элемент из списка, который выполняет определенное условие. Подход, который я использовал, работает, но я уверен, что это не каждый эффективный. Какой был бы самый эффективный способ сделать это?Самый быстрый способ выбрать случайный элемент из списка, который удовлетворяет определенному условию
Следующий код внутри цикла while (true), поэтому, очевидно, не очень эффективно перетасовывать список на каждой итерации.
Foo randomPick = null;
Collections.shuffle(myList);
for (Foo f : myList) {
if (f.property) {
randomPick = f;
break;
}
}
Заранее благодарен!
см: http://stackoverflow.com/questions/966108/choose-random-array -element-satisfying-specific-property –
см .: http://www.javamex.com/tutorials/random_numbers/random_sample.shtml –