Class LeftTupleSinkNodeList

java.lang.Object
org.drools.core.reteoo.LeftTupleSinkNodeList
All Implemented Interfaces:
Externalizable, Serializable

public class LeftTupleSinkNodeList extends Object implements Externalizable
This is a simple linked linked implementation. Each node must implement LinkedListNode so that it references the node before and after it. This way a node can be removed without having to scan the list to find it. This class does not provide an Iterator implementation as its designed for efficiency and not genericity. There are a number of ways to iterate the list.

Simple iterator:

 for ( LinkedListNode node = list.getFirst(); node != null; node =  node.remove() ) {
 }
 
Iterator that pops the first entry:
 for ( LinkedListNode node = list.removeFirst(); node != null; node = list.removeFirst() ) {
 }
 
See Also:
  • Constructor Details

    • LeftTupleSinkNodeList

      public LeftTupleSinkNodeList()
      Construct an empty LinkedList
  • Method Details

    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException
      ClassNotFoundException
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Specified by:
      writeExternal in interface Externalizable
      Throws:
      IOException
    • add

      public void add(LeftTupleSinkNode node)
      Add a TupleSinkNode to the list. If the LinkedList is empty then the first and last nodes are set to the added node.
      Parameters:
      node - The TupleSinkNode to be added
    • remove

      public void remove(LeftTupleSinkNode node)
      Removes a TupleSinkNode from the list. This works by attach the previous reference to the child reference. When the node to be removed is the first node it calls removeFirst(). When the node to be removed is the last node it calls removeLast().
      Parameters:
      node - The TupleSinkNode to be removed.
    • getFirst

      public final LeftTupleSinkNode getFirst()
      Return the first node in the list
      Returns:
      The first TupleSinkNode.
    • getLast

      public final LeftTupleSinkNode getLast()
      Return the last node in the list
      Returns:
      The last TupleSinkNode.
    • removeFirst

      public LeftTupleSinkNode removeFirst()
      Remove the first node from the list. The next node then becomes the first node. If this is the last node then both first and last node references are set to null.
      Returns:
      The first TupleSinkNode.
    • removeLast

      public LeftTupleSinkNode removeLast()
      Remove the last node from the list. The previous node then becomes the last node. If this is the last node then both first and last node references are set to null.
      Returns:
      The first TupleSinkNode.
    • isEmpty

      public final boolean isEmpty()
      Returns:
      boolean value indicating the empty status of the list
    • clear

      public void clear()
      Iterates the list removing all the nodes until there are no more nodes to remove.
    • size

      public final int size()
      Returns:
      return size of the list as an int
    • iterator

      public Iterator iterator()
      Returns a list iterator
      Returns: