/** * Wrap the base iterator, randomizing with a buffer of length sz. */ public RandomOrderIterator(int sz, Iterator<T> base) { super(base); buffer = new Object[sz]; top = 0; fill(); }
@Override public ExtendedIterator<Triple> find( Node s, Node p, Node o ) { return new RandomOrderIterator<>(bufsz,super.find( s, p, o )); } @Override
@Override public ExtendedIterator<Triple> find( Triple triple ) { return new RandomOrderIterator<>(bufsz,super.find( triple )); }
/** * Wrap the base iterator, randomizing with a buffer of length sz. */ public RandomOrderIterator(int sz, Iterator<T> base) { super(base); buffer = new Object[sz]; top = 0; fill(); }
@Override public ExtendedIterator<Triple> find( Node s, Node p, Node o ) { return new RandomOrderIterator<>(bufsz,super.find( s, p, o )); } @Override
@Override public T next() { int ix = rnd.nextInt(top); Object rslt = buffer[ix]; top--; buffer[ix] = buffer[top]; fill(); @SuppressWarnings("unchecked") T obj = (T)rslt; return obj ; }
@Override public ExtendedIterator<Triple> find( Triple triple ) { return new RandomOrderIterator<>(bufsz,super.find( triple )); }
@Override public T next() { int ix = rnd.nextInt(top); Object rslt = buffer[ix]; top--; buffer[ix] = buffer[top]; fill(); @SuppressWarnings("unchecked") T obj = (T)rslt; return obj ; }