我应该实现一个迭代器,它以随机顺序返回项目上的迭代器。这就是我现在尝试做的事情:
private class RandomQueueIterator<E> implements Iterator<E> {
int i = -1;
public boolean hasNext() {
return i+1 < size;
}
public E next() {
if (!hasNext()) {
throw new java.util.NoSuchElementException();
}
i++;
return (E) queue[i];
}
public void remove() {
throw new java.lang.UnsupportedOperationException();
}
}
public Iterator<Item> iterator() { // return an iterator over the items in random order
return new RandomQueueIterator();
}
我知道我应该(?)使用StdRandon.uniform();但不知道在哪里写它。因此,我希望你们中的一个能帮助我!
答案 0 :(得分:2)
我认为最简单的方法是复制你想要迭代的列表,并将其改组:
List<E> shuffled = new ArrayList<>(list);
Collections.shuffle(shuffled);
然后使用shuffled.iterator()
。