com.sun.xml.bind.v2.util
Class CollisionCheckStack<E>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList<E>
          extended by com.sun.xml.bind.v2.util.CollisionCheckStack<E>
All Implemented Interfaces:
Iterable<E>, Collection<E>, List<E>

public final class CollisionCheckStack<E>
extends AbstractList<E>

Stack-like data structure that allows the following efficient operations:

  1. Push/pop operation.
  2. Duplicate check. When an object that's already in the stack is pushed, this class will tell you so.

Object equality is their identity equality.

This class implements List for accessing items in the stack, but List methods that alter the stack is not supported.


Field Summary
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
CollisionCheckStack()
           
 
Method Summary
 E get(int index)
           
 String getCycleString()
          String that represents the cycle.
 boolean getUseIdentity()
           
 E peek()
          Returns the top of the stack.
 E pop()
          Pops an object from the stack
 boolean push(E o)
          Pushes a new object to the stack.
 void pushNocheck(E o)
          Pushes a new object to the stack without making it participate with the collision check.
 void reset()
          Clears all the contents in the stack.
 void setUseIdentity(boolean useIdentity)
          Set to false to use Object.equals(Object) to detect cycles.
 int size()
           
 
Methods inherited from class java.util.AbstractList
add, add, addAll, clear, equals, hashCode, indexOf, iterator, lastIndexOf, listIterator, listIterator, remove, removeRange, set, subList
 
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
 

Constructor Detail

CollisionCheckStack

public CollisionCheckStack()
Method Detail

setUseIdentity

public void setUseIdentity(boolean useIdentity)
Set to false to use Object.equals(Object) to detect cycles. This method can be only used when the stack is empty.


getUseIdentity

public boolean getUseIdentity()

push

public boolean push(E o)
Pushes a new object to the stack.

Returns:
true if this object has already been pushed

pushNocheck

public void pushNocheck(E o)
Pushes a new object to the stack without making it participate with the collision check.


get

public E get(int index)
Specified by:
get in interface List<E>
Specified by:
get in class AbstractList<E>

size

public int size()
Specified by:
size in interface Collection<E>
Specified by:
size in interface List<E>
Specified by:
size in class AbstractCollection<E>

pop

public E pop()
Pops an object from the stack


peek

public E peek()
Returns the top of the stack.


reset

public void reset()
Clears all the contents in the stack.


getCycleString

public String getCycleString()
String that represents the cycle.