Class LinkedArrayList


  • public class LinkedArrayList
    extends java.lang.Object
    A list implementation which combines an ArrayList with a LinkedList to avoid copying values when the capacity needs to be increased.

    The class is non final to allow embedding it directly and thus saving on object allocation.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) int capacityHint
      The capacity of each array segment.
      (package private) java.lang.Object[] head
      Contains the head of the linked array list if not null.
      (package private) int indexInTail
      The next available slot in the current tail.
      (package private) int size
      The total size of the list; written after elements have been added (release) and and when read, the value indicates how many elements can be safely read (acquire).
      (package private) java.lang.Object[] tail
      The tail array where new elements will be added.
    • Constructor Summary

      Constructors 
      Constructor Description
      LinkedArrayList​(int capacityHint)
      Constructor with the capacity hint of each array segment.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(java.lang.Object o)
      Adds a new element to this list.
      java.lang.Object[] head()
      Returns the head buffer segment or null if the list is empty.
      int size()
      Returns the total size of the list.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • capacityHint

        final int capacityHint
        The capacity of each array segment.
      • head

        java.lang.Object[] head
        Contains the head of the linked array list if not null. The length is always capacityHint + 1 and the last element is an Object[] pointing to the next element of the linked array list.
      • tail

        java.lang.Object[] tail
        The tail array where new elements will be added.
      • size

        volatile int size
        The total size of the list; written after elements have been added (release) and and when read, the value indicates how many elements can be safely read (acquire).
      • indexInTail

        int indexInTail
        The next available slot in the current tail.
    • Constructor Detail

      • LinkedArrayList

        public LinkedArrayList​(int capacityHint)
        Constructor with the capacity hint of each array segment.
        Parameters:
        capacityHint - the expected number of elements to hold (can grow beyond that)
    • Method Detail

      • add

        public void add​(java.lang.Object o)
        Adds a new element to this list.
        Parameters:
        o - the object to add, nulls are accepted
      • head

        public java.lang.Object[] head()
        Returns the head buffer segment or null if the list is empty.
        Returns:
        the head object array
      • size

        public int size()
        Returns the total size of the list.
        Returns:
        the total size of the list
      • toString

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