如何实现随机迭代器?

时间:2018-02-17 12:08:44

标签: java random-access

我应该实现一个迭代器,它以随机顺序返回项目上的迭代器。这就是我现在尝试做的事情:

    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();但不知道在哪里写它。因此,我希望你们中的一个能帮助我!

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是复制你想要迭代的列表,并将其改组:

List<E> shuffled = new ArrayList<>(list);
Collections.shuffle(shuffled);

然后使用shuffled.iterator()