Class LinkedList<T extends DoubleLinkedEntry<T>>

java.lang.Object
org.drools.core.util.LinkedList<T>
All Implemented Interfaces:
Externalizable, Serializable
Direct Known Subclasses:
EqualityKey, SegmentMemory, TupleList

public class LinkedList<T extends DoubleLinkedEntry<T>> extends Object implements Externalizable
This is a simple 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:
  • Field Details

    • fastIterator

      public static final FastIterator fastIterator
  • Constructor Details

    • LinkedList

      public LinkedList()
      Construct an empty LinkedList
    • LinkedList

      public LinkedList(T node)
    • LinkedList

      public LinkedList(T firstNode, T lastNode, int size)
  • 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(T node)
      Add a LinkedListNode to the list. If the LinkedList is empty then the first and last nodes are set to the added node.
      Parameters:
      node - The LinkedListNode to be added
    • addLast

      public void addLast(T node)
      Add a LinkedListNode to the end of the list. If the LinkedList is empty then the first and last nodes are set to the added node.
      Parameters:
      node - The LinkedListNode to be added
    • addFirst

      public void addFirst(T node)
    • remove

      public void remove(T node)
      Removes a LinkedListNode 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 LinkedListNode to be removed.
    • removeFirst

      public T 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 LinkedListNode.
    • removeLast

      public T 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 LinkedListNode.
    • insertAfter

      public void insertAfter(T existingNode, T newNode)
    • removeAdd

      public void removeAdd(T node)
    • contains

      public boolean contains(T node)
    • getFirst

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

      public final T getLast()
      Return the last node in the list
      Returns:
      The last LinkedListNode.
    • get

      public T get(int i)
    • get

      public T get(T node)
    • 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
    • hashCode

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

      public boolean equals(Object object)
      Overrides:
      equals in class Object
    • fastIterator

      public FastIterator<T> fastIterator()
    • javaUtilIterator

      public Iterator<T> javaUtilIterator()
    • copyStateInto

      protected void copyStateInto(LinkedList<T> other)
    • addAllToCollection

      public <I> void addAllToCollection(Collection<I> c)