Class VisitOnceWorkingSet<E>

  • Type Parameters:
    E - the type of the elements that this working set contains
    All Implemented Interfaces:
    WorkingSet<E>

    public final class VisitOnceWorkingSet<E>
    extends java.lang.Object
    implements WorkingSet<E>
    A working set that guarantees that each element will be added to this working set no more than once. It works by wrapping a difference instance of WorkingSet, and delegating all operations to that instance, except for push(Object): an element will be pushed only if it has not already added before (even if it is has already been popped out). This implementation is not thread-safe.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object obj)  
      java.util.Collection<E> getSeen()
      Yields the elements visited (and this no longer able to be added to this working set) by this object.
      int hashCode()  
      boolean isEmpty()
      Yields true if and only if this working set is empty.
      static <E> VisitOnceWorkingSet<E> mk​(WorkingSet<E> ws)
      Yields a new, empty working set.
      E peek()
      Returns the next element to be processed from this working set without removing it.
      E pop()
      Removes the next element to be processed from this working set and returns it.
      void push​(E e)
      Pushes a new element into this working set.
      int size()
      Yields the size of this working set, that is, the number of elements contained in it.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Method Detail

      • mk

        public static <E> VisitOnceWorkingSet<E> mk​(WorkingSet<E> ws)
        Yields a new, empty working set.
        Type Parameters:
        E - the type of the elements that the returned working set contains
        Parameters:
        ws - the underlying working set
        Returns:
        the new working set
      • push

        public void push​(E e)
        Description copied from interface: WorkingSet
        Pushes a new element into this working set.
        Specified by:
        push in interface WorkingSet<E>
        Parameters:
        e - the element
      • pop

        public E pop()
        Description copied from interface: WorkingSet
        Removes the next element to be processed from this working set and returns it.
        Specified by:
        pop in interface WorkingSet<E>
        Returns:
        the next element to process
      • peek

        public E peek()
        Description copied from interface: WorkingSet
        Returns the next element to be processed from this working set without removing it.
        Specified by:
        peek in interface WorkingSet<E>
        Returns:
        the next element to process
      • size

        public int size()
        Description copied from interface: WorkingSet
        Yields the size of this working set, that is, the number of elements contained in it.
        Specified by:
        size in interface WorkingSet<E>
        Returns:
        the size
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: WorkingSet
        Yields true if and only if this working set is empty.
        Specified by:
        isEmpty in interface WorkingSet<E>
        Returns:
        true if that condition holds
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getSeen

        public java.util.Collection<E> getSeen()
        Yields the elements visited (and this no longer able to be added to this working set) by this object.
        Returns:
        the collection of visited elements
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object