Я разговариваю с API, который дает мне java.util.Iterator
над коллекцией. Это означает, что я могу перебирать его, но я не могу получить прямой/произвольный доступ к элементам.Получить случайный элемент из последовательной коллекции
Теперь к моей проблеме: Я хочу получить один случайный элемент из этой коллекции. Как мне это сделать? Наверное, я мог бы создать новую коллекцию, которая обеспечивает прямой доступ, но разве это не слишком много памяти? Я мог бы также перебирать всю коллекцию, и для каждого элемента «бросить кубик», чтобы увидеть, должен ли я взять этот элемент и выйти из итерации или продолжить. Но тогда мне нужен размер коллекции, и я не могу получить это от Итератора.
Заранее спасибо.
Коллекция обычно не должна быть класса, реализующих 'Iterator'. – thejh
Является ли ваша коллекция 'java.util.Collection'? – thejh
Потребление памяти не должно быть таким большим. Новая коллекция просто содержит указатели на фактические данные, поэтому размер нового объекта коллекции! = Размер коллекции. –