Лучший способ выбрать случайное подмножество из коллекции?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Лучший способ выбрать случайное подмножество из коллекции?

Сообщение Anonymous »

У меня есть набор объектов в векторе, из которого я хотел бы выбрать случайное подмножество (например, 100 элементов возвращаются; выберите 5 случайным образом). В моем первом (очень поспешном) проходе я принял чрезвычайно простое и, возможно, слишком умное решение:

Код: Выделить всё

Vector itemsVector = getItems();

Collections.shuffle(itemsVector);
itemsVector.setSize(5);
Хотя это имеет то преимущество, что оно красивое и простое, я подозреваю, что оно не будет хорошо масштабироваться, т. е. Collections.shuffle() должно быть как минимум O(n) . Моя менее разумная альтернатива:

Код: Выделить всё

Vector itemsVector = getItems();

Random rand = new Random(System.currentTimeMillis()); // would make this static to the class

List subsetList = new ArrayList(5);
for (int i = 0; i < 5; i++) {
// be sure to use Vector.remove() or you may get the same item twice
subsetList.add(itemsVector.remove(rand.nextInt(itemsVector.size())));
}
Есть предложения по лучшим способам выделения случайного подмножества из коллекции?

Подробнее здесь: https://stackoverflow.com/questions/136 ... collection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»