Class RandomIterable<T>

  • All Implemented Interfaces:
    Iterable<T>, Iterator<T>
    Direct Known Subclasses:
    ContextIterable

    public class RandomIterable<T>
    extends Object
    implements Iterator<T>, Iterable<T>
    An iterable that iterates over a collection of objects at random. The "length" of the iterable may be less than the number of objects in the collection.
    Version:
    $Revision$ $Date$
    Author:
    Nick Collier
    • Field Detail

      • index

        protected int index
      • list

        protected List<T> list
      • returned

        protected boolean[] returned
      • numToReturn

        protected int numToReturn
      • numReturned

        protected int numReturned
    • Constructor Detail

      • RandomIterable

        public RandomIterable​(IndexedIterable<T> iter,
                              long count)
        Creates a RandomIterable that will iterate over count number of objects in the specified IndexedIterable.
        Parameters:
        iter -
        count -
    • Method Detail

      • hasNext

        public boolean hasNext()
        Returns true if the iteration has more elements. (In other words, returns true if next would return an element rather than throwing an exception.)
        Specified by:
        hasNext in interface Iterator<T>
        Returns:
        true if the iterator has more elements.
      • next

        public T next()
        Returns the next element in the iteration. Calling this method repeatedly until the hasNext() method returns false will return each element in the underlying collection exactly once.
        Specified by:
        next in interface Iterator<T>
        Returns:
        the next element in the iteration.
        Throws:
        NoSuchElementException - iteration has no more elements.
      • remove

        public void remove()
        Removes from the underlying collection the last element returned by the iterator (optional operation). This method can be called only once per call to next. The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method.
        Specified by:
        remove in interface Iterator<T>
        Throws:
        UnsupportedOperationException - if the remove operation is not supported by this Iterator.
        IllegalStateException - if the next method has not yet been called, or the remove method has already been called after the last call to the next method.
      • iterator

        public Iterator<T> iterator()
        Returns an iterator over a set of elements of type T.
        Specified by:
        iterator in interface Iterable<T>
        Returns:
        an Iterator.
      • removeEvent

        protected void removeEvent​(T target)
        Marks the target as returned if it exists in the object list.
        Parameters:
        target - the object to remove from the list.