Klasse CopyOnWriteObjectArrayList<T>

Typparameter:
T - the keyType of elements maintained by this Collection
Alle implementierten Schnittstellen:
Iterable<T>, Collection<T>, List<T>, ObjectCollection<T>, ObjectIterable<T>, ObjectList<T>, ISizeProvider, ITrimmable, Stack<T>

public class CopyOnWriteObjectArrayList<T> extends AbstractObjectList<T> implements ITrimmable, Stack<T>
A Type-Specific Array-based implementation of list that is written to reduce (un)boxing

This implementation is optimized to improve how data is processed with interfaces like ITrimmable, Stack and with optimized functions that use type-specific implementations for primitives and optimized logic for bulkactions.

  • Konstruktordetails

    • CopyOnWriteObjectArrayList

      public CopyOnWriteObjectArrayList()
      Creates a new ArrayList with a Empty array.
    • CopyOnWriteObjectArrayList

      @Deprecated public CopyOnWriteObjectArrayList(Collection<? extends T> c)
      Veraltet.
      Creates a new ArrayList a copy with the contents of the Collection.
      Parameter:
      c - the elements that should be added into the list
    • CopyOnWriteObjectArrayList

      public CopyOnWriteObjectArrayList(ObjectCollection<T> c)
      Creates a new ArrayList a copy with the contents of the Collection.
      Parameter:
      c - the elements that should be added into the list
    • CopyOnWriteObjectArrayList

      public CopyOnWriteObjectArrayList(ObjectList<T> l)
      Creates a new ArrayList a copy with the contents of the List.
      Parameter:
      l - the elements that should be added into the list
    • CopyOnWriteObjectArrayList

      public CopyOnWriteObjectArrayList(T... a)
      Creates a new ArrayList with a Copy of the array
      Parameter:
      a - the array that should be copied
    • CopyOnWriteObjectArrayList

      public CopyOnWriteObjectArrayList(T[] a, int length)
      Creates a new ArrayList with a Copy of the array with a custom length
      Parameter:
      a - the array that should be copied
      length - the desired length that should be copied
    • CopyOnWriteObjectArrayList

      public CopyOnWriteObjectArrayList(T[] a, int offset, int length)
      Creates a new ArrayList with a Copy of the array with in the custom range.
      Parameter:
      a - the array that should be copied
      offset - the starting offset of where the array should be copied from
      length - the desired length that should be copied
      Löst aus:
      IllegalStateException - if offset is smaller then 0
      IllegalStateException - if the offset + length exceeds the array length
  • Methodendetails

    • of

      public static <T> CopyOnWriteObjectArrayList<T> of(Class<T> c)
      Creates a new ArrayList with a EmptyObject array of the Type requested
      Typparameter:
      T - the keyType of elements maintained by this Collection
      Parameter:
      c - the type of the array
      Gibt zurück:
      a typed List
    • add

      public boolean add(T e)
      Appends the specified element to the end of this list.
      Angegeben von:
      add in Schnittstelle Collection<T>
      Angegeben von:
      add in Schnittstelle List<T>
      Setzt außer Kraft:
      add in Klasse AbstractObjectList<T>
      Parameter:
      e - element to be appended to this list
      Gibt zurück:
      true (as specified by Collection.add(E))
    • push

      public void push(T e)
      Appends the specified element to the end of this Stack.
      Angegeben von:
      push in Schnittstelle Stack<T>
      Parameter:
      e - element to be appended to this Stack
    • add

      public void add(int index, T e)
      Appends the specified element to the index of the list
      Angegeben von:
      add in Schnittstelle List<T>
      Parameter:
      index - the index where to append the element to
      e - the element to append to the list
      Löst aus:
      IndexOutOfBoundsException - if index is outside of the lists range
    • addAll

      @Deprecated public boolean addAll(int index, Collection<? extends T> c)
      Veraltet.
      Appends the specified elements to the index of the list. This function may delegate to more appropriate function if necessary
      Angegeben von:
      addAll in Schnittstelle List<T>
      Parameter:
      index - the index where to append the elements to
      c - the elements to append to the list
      Löst aus:
      IndexOutOfBoundsException - if index is outside of the lists range
      NullPointerException - if collection contains a null element
    • addAll

      public boolean addAll(int index, ObjectCollection<T> c)
      Appends the specified elements to the index of the list. This function may delegate to more appropriate function if necessary
      Angegeben von:
      addAll in Schnittstelle ObjectList<T>
      Parameter:
      index - the index where to append the elements to
      c - the elements to append to the list
      Gibt zurück:
      true if the list was modified
      Löst aus:
      IndexOutOfBoundsException - if index is outside of the lists range
      Siehe auch:
    • addAll

      public boolean addAll(int index, ObjectList<T> c)
      Appends the specified elements to the index of the list.
      Angegeben von:
      addAll in Schnittstelle ObjectList<T>
      Parameter:
      index - the index where to append the elements to
      c - the elements to append to the list
      Gibt zurück:
      true if the list was modified
      Löst aus:
      IndexOutOfBoundsException - if index is outside of the lists range
    • addAll

      public boolean addAll(T[] e, int offset, int length)
      Beschreibung aus Schnittstelle kopiert: ObjectCollection
      A Type-Specific Array based addAll method to reduce the amount of Wrapping
      Angegeben von:
      addAll in Schnittstelle ObjectCollection<T>
      Parameter:
      e - the elements that should be added
      offset - where to start within the array
      length - how many elements of the array should be added
      Gibt zurück:
      if the collection was modified
    • addElements

      public void addElements(int from, T[] a, int offset, int length)
      Appends the specified array elements to the index of the list.
      Angegeben von:
      addElements in Schnittstelle ObjectList<T>
      Parameter:
      from - the index where to append the elements to
      a - the elements to append to the list
      offset - where to start ino the array
      length - the amount of elements to insert
      Löst aus:
      IndexOutOfBoundsException - if index is outside of the lists range
    • getElements

      public T[] getElements(int from, T[] a, int offset, int length)
      A function to fast fetch elements from the list
      Angegeben von:
      getElements in Schnittstelle ObjectList<T>
      Parameter:
      from - index where the list should be fetching elements from
      a - the array where the values should be inserted to
      offset - the startIndex of where the array should be written to
      length - the number of elements the values should be fetched from
      Gibt zurück:
      the inputArray
      Löst aus:
      NullPointerException - if the array is null
      IndexOutOfBoundsException - if from is outside of the lists range
      IllegalStateException - if offset or length are smaller then 0 or exceed the array length
    • removeElements

      public void removeElements(int from, int to)
      a function to fast remove elements from the list.
      Angegeben von:
      removeElements in Schnittstelle ObjectList<T>
      Parameter:
      from - the start index of where the elements should be removed from (inclusive)
      to - the end index of where the elements should be removed to (exclusive)
    • extractElements

      public <K> K[] extractElements(int from, int to, Class<K> type)
      A function to fast extract elements out of the list, this removes the elements that were fetched.
      Angegeben von:
      extractElements in Schnittstelle ObjectList<T>
      Typparameter:
      K - the keyType of elements maintained by this Collection
      Parameter:
      from - the start index of where the elements should be fetched from (inclusive)
      to - the end index of where the elements should be fetched to (exclusive)
      type - the type of the OutputArray
      Gibt zurück:
      a array of the elements that were fetched
    • contains

      @Deprecated public boolean contains(Object o)
      Veraltet.
      A function to find if the Element is present in this list.
      Angegeben von:
      contains in Schnittstelle Collection<T>
      Angegeben von:
      contains in Schnittstelle List<T>
      Setzt außer Kraft:
      contains in Klasse AbstractCollection<T>
      Parameter:
      o - the element that is searched for
      Gibt zurück:
      if the element was found.
    • indexOf

      @Deprecated public int indexOf(Object o)
      Veraltet.
      A function to find the index of a given element
      Angegeben von:
      indexOf in Schnittstelle List<T>
      Setzt außer Kraft:
      indexOf in Klasse AbstractObjectList<T>
      Parameter:
      o - the element that is searched for
      Gibt zurück:
      the index of the element if found. (if not found then -1)
    • lastIndexOf

      @Deprecated public int lastIndexOf(Object o)
      Veraltet.
      A function to find the last index of a given element
      Angegeben von:
      lastIndexOf in Schnittstelle List<T>
      Setzt außer Kraft:
      lastIndexOf in Klasse AbstractObjectList<T>
      Parameter:
      o - the element that is searched for
      Gibt zurück:
      the last index of the element if found. (if not found then -1)
    • sort

      public void sort(Comparator<? super T> c)
      Sorts the elements specified by the Natural order either by using the Comparator or the elements
      Angegeben von:
      sort in Schnittstelle List<T>
      Angegeben von:
      sort in Schnittstelle ObjectList<T>
      Parameter:
      c - the sorter of the elements, can be null
      Siehe auch:
    • unstableSort

      public void unstableSort(Comparator<? super T> c)
      Sorts the elements specified by the Natural order either by using the Comparator or the elements using a unstable sort
      Angegeben von:
      unstableSort in Schnittstelle ObjectList<T>
      Parameter:
      c - the sorter of the elements, can be null
      Siehe auch:
    • get

      public T get(int index)
      A Type-Specific get function to reduce (un)boxing
      Angegeben von:
      get in Schnittstelle List<T>
      Parameter:
      index - the index of the element to fetch
      Gibt zurück:
      the value of the requested index
      Löst aus:
      IndexOutOfBoundsException - if the index is out of range
    • peek

      public T peek(int index)
      Provides the Selected Object from the stack. Top to bottom
      Angegeben von:
      peek in Schnittstelle Stack<T>
      Parameter:
      index - of the element that should be provided
      Gibt zurück:
      the element that was requested
      Löst aus:
      ArrayIndexOutOfBoundsException - if the index is out of bounds
      Siehe auch:
    • listIterator

      public ObjectListIterator<T> listIterator(int index)
      Beschreibung aus Schnittstelle kopiert: ObjectList
      A Type-Specific Iterator of listIterator
      Angegeben von:
      listIterator in Schnittstelle List<T>
      Angegeben von:
      listIterator in Schnittstelle ObjectList<T>
      Setzt außer Kraft:
      listIterator in Klasse AbstractObjectList<T>
      Siehe auch:
    • subList

      public ObjectList<T> subList(int fromIndex, int toIndex)
      Beschreibung aus Schnittstelle kopiert: ObjectList
      A Type-Specific List of subList
      Angegeben von:
      subList in Schnittstelle List<T>
      Angegeben von:
      subList in Schnittstelle ObjectList<T>
      Setzt außer Kraft:
      subList in Klasse AbstractObjectList<T>
      Siehe auch:
    • forEach

      public void forEach(Consumer<? super T> action)
      A Type Specific foreach function that reduces (un)boxing
      Angegeben von:
      forEach in Schnittstelle Iterable<T>
      Parameter:
      action - The action to be performed for each element
      Löst aus:
      NullPointerException - if the specified action is null
      Siehe auch:
      ImplSpec:

      The default implementation behaves as if:

      
       	for(int i = 0,m=data.length;i<m;i++)
      		action.accept(data[i]);
       
    • forEach

      public <E> void forEach(E input, ObjectObjectConsumer<E,T> action)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Helper function to reduce Lambda usage and allow for more method references, since these are faster/cleaner.
      Angegeben von:
      forEach in Schnittstelle ObjectIterable<T>
      Typparameter:
      E - the generic type of the Object
      Parameter:
      input - the object that should be included
      action - The action to be performed for each element
    • matchesAny

      public boolean matchesAny(Predicate<T> filter)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Helper function to reduce stream usage that allows to filter for any matches.
      Angegeben von:
      matchesAny in Schnittstelle ObjectIterable<T>
      Parameter:
      filter - that should be applied
      Gibt zurück:
      true if any matches were found
    • matchesNone

      public boolean matchesNone(Predicate<T> filter)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Helper function to reduce stream usage that allows to filter for no matches.
      Angegeben von:
      matchesNone in Schnittstelle ObjectIterable<T>
      Parameter:
      filter - that should be applied
      Gibt zurück:
      true if no matches were found
    • matchesAll

      public boolean matchesAll(Predicate<T> filter)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Helper function to reduce stream usage that allows to filter for all matches.
      Angegeben von:
      matchesAll in Schnittstelle ObjectIterable<T>
      Parameter:
      filter - that should be applied
      Gibt zurück:
      true if all matches.
    • findFirst

      public T findFirst(Predicate<T> filter)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Helper function to reduce stream usage that allows to filter for the first match.
      Angegeben von:
      findFirst in Schnittstelle ObjectIterable<T>
      Parameter:
      filter - that should be applied
      Gibt zurück:
      the found value or the null equivalent variant.
    • reduce

      public <E> E reduce(E identity, BiFunction<E,T,E> operator)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Performs a reduction on the elements of this Iterable
      Angegeben von:
      reduce in Schnittstelle ObjectIterable<T>
      Typparameter:
      E - the keyType of elements maintained by this Collection
      Parameter:
      identity - the start value
      operator - the operation that should be applied
      Gibt zurück:
      the reduction result, returns identity if nothing was found
    • reduce

      public T reduce(ObjectObjectUnaryOperator<T,T> operator)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Performs a reduction on the elements of this Iterable
      Angegeben von:
      reduce in Schnittstelle ObjectIterable<T>
      Parameter:
      operator - the operation that should be applied
      Gibt zurück:
      the reduction result, returns null value if nothing was found
    • count

      public int count(Predicate<T> filter)
      Beschreibung aus Schnittstelle kopiert: ObjectIterable
      Helper function to reduce stream usage that allows to count the valid elements.
      Angegeben von:
      count in Schnittstelle ObjectIterable<T>
      Parameter:
      filter - that should be applied
      Gibt zurück:
      the amount of Valid Elements
    • set

      public T set(int index, T e)
      A Type-Specific set function to reduce (un)boxing
      Angegeben von:
      set in Schnittstelle List<T>
      Parameter:
      index - the index of the element to set
      e - the value that should be set
      Gibt zurück:
      the previous element
      Löst aus:
      IndexOutOfBoundsException - if the index is out of range
    • replaceAll

      public void replaceAll(UnaryOperator<T> o)
      A function to replace all values in the list
      Angegeben von:
      replaceAll in Schnittstelle List<T>
      Angegeben von:
      replaceAll in Schnittstelle ObjectList<T>
      Parameter:
      o - the action to replace the values
      Löst aus:
      NullPointerException - if o is null
    • remove

      public T remove(int index)
      A Type-Specific remove function to reduce (un)boxing
      Angegeben von:
      remove in Schnittstelle List<T>
      Parameter:
      index - the index of the element to fetch
      Gibt zurück:
      the value of the requested index
      Löst aus:
      IndexOutOfBoundsException - if the index is out of range
    • swapRemove

      public T swapRemove(int index)
      Beschreibung aus Schnittstelle kopiert: ObjectList
      A Highly Optimized remove function that removes the desired element. But instead of shifting the elements to the left it moves the last element to the removed space.
      Angegeben von:
      swapRemove in Schnittstelle ObjectList<T>
      Parameter:
      index - the index of the element to be removed
      Gibt zurück:
      the element previously at the specified position
    • remove

      public boolean remove(Object type)
      Angegeben von:
      remove in Schnittstelle Collection<T>
      Angegeben von:
      remove in Schnittstelle List<T>
      Setzt außer Kraft:
      remove in Klasse AbstractCollection<T>
    • pop

      public T pop()
      A Type-Specific pop function to reduce (un)boxing
      Angegeben von:
      pop in Schnittstelle Stack<T>
      Gibt zurück:
      the value of the requested index
      Löst aus:
      IndexOutOfBoundsException - if the index is out of range
    • removeAll

      @Deprecated public boolean removeAll(Collection<?> c)
      Veraltet.
      A function to remove all elements that were provided in the other collection This function might delegate to a more appropriate function if necessary
      Angegeben von:
      removeAll in Schnittstelle Collection<T>
      Angegeben von:
      removeAll in Schnittstelle List<T>
      Setzt außer Kraft:
      removeAll in Klasse AbstractCollection<T>
      Parameter:
      c - the elements that should be removed
      Gibt zurück:
      true if the collection was modified
      Löst aus:
      NullPointerException - if the collection is null
    • retainAll

      @Deprecated public boolean retainAll(Collection<?> c)
      Veraltet.
      A function to retain all elements that were provided in the other collection This function might delegate to a more appropriate function if necessary
      Angegeben von:
      retainAll in Schnittstelle Collection<T>
      Angegeben von:
      retainAll in Schnittstelle List<T>
      Setzt außer Kraft:
      retainAll in Klasse AbstractCollection<T>
      Parameter:
      c - the elements that should be kept. If empty, LongArrayList#clear is called.
      Gibt zurück:
      true if the collection was modified
      Löst aus:
      NullPointerException - if the collection is null
    • removeIf

      @Deprecated public boolean removeIf(Predicate<? super T> filter)
      Veraltet.
      A optimized List#removeIf(Predicate) that more quickly removes elements from the list then the ArrayList implementation
      Angegeben von:
      removeIf in Schnittstelle Collection<T>
      Parameter:
      filter - the filter to remove elements
      Gibt zurück:
      true if the list was modified
    • removeAll

      public boolean removeAll(ObjectCollection<T> c)
      A function to remove all elements that were provided in the other collection
      Angegeben von:
      removeAll in Schnittstelle ObjectCollection<T>
      Setzt außer Kraft:
      removeAll in Klasse AbstractObjectCollection<T>
      Parameter:
      c - the elements that should be removed
      Gibt zurück:
      true if the collection was modified
      Löst aus:
      NullPointerException - if the collection is null
      Siehe auch:
    • removeAll

      public boolean removeAll(ObjectCollection<T> c, Consumer<T> r)
      Beschreibung aus Schnittstelle kopiert: ObjectCollection
      A Type-Specific removeAll function that reduces (un)boxing. It also notifies the remover of which exact element is going to be removed.
      Angegeben von:
      removeAll in Schnittstelle ObjectCollection<T>
      Setzt außer Kraft:
      removeAll in Klasse AbstractObjectCollection<T>
      Parameter:
      c - the collection of elements that should be removed
      r - elements that got removed
      Gibt zurück:
      true if any element was removed
      Siehe auch:
    • retainAll

      public boolean retainAll(ObjectCollection<T> c)
      A function to retain all elements that were provided in the other collection This function might delegate to a more appropriate function if necessary
      Angegeben von:
      retainAll in Schnittstelle ObjectCollection<T>
      Setzt außer Kraft:
      retainAll in Klasse AbstractObjectCollection<T>
      Parameter:
      c - the elements that should be kept. If empty, LongArrayList#clear is called.
      Gibt zurück:
      true if the collection was modified
      Löst aus:
      NullPointerException - if the collection is null
      Siehe auch:
    • retainAll

      public boolean retainAll(ObjectCollection<T> c, Consumer<T> r)
      Beschreibung aus Schnittstelle kopiert: ObjectCollection
      A Type-Specific retainAll function that reduces (un)boxing. It also notifies the remover of which exact element is going to be removed.
      Angegeben von:
      retainAll in Schnittstelle ObjectCollection<T>
      Setzt außer Kraft:
      retainAll in Klasse AbstractObjectCollection<T>
      Parameter:
      c - the collection of elements that should be kept
      r - elements that got removed
      Gibt zurück:
      true if any element was removed
      Siehe auch:
    • toArray

      public Object[] toArray()
      A toArray implementation that ensures the Array itself is a Object.
      Angegeben von:
      toArray in Schnittstelle Collection<T>
      Angegeben von:
      toArray in Schnittstelle List<T>
      Angegeben von:
      toArray in Schnittstelle Stack<T>
      Setzt außer Kraft:
      toArray in Klasse AbstractCollection<T>
      Gibt zurück:
      a Array of the elements in the list
    • toArray

      public <E> E[] toArray(E[] a)
      A toArray implementation that ensures the Array itself is a Object.
      Angegeben von:
      toArray in Schnittstelle Collection<T>
      Angegeben von:
      toArray in Schnittstelle List<T>
      Angegeben von:
      toArray in Schnittstelle Stack<T>
      Setzt außer Kraft:
      toArray in Klasse AbstractCollection<T>
      Typparameter:
      E - the keyType of elements maintained by this Collection
      Parameter:
      a - original array. If null a Object array with the right size is created. If to small the Array of the same type is created with the right size
      Gibt zurück:
      a Array of the elements in the list
    • toArray

      public <E> E[] toArray(IntFunction<E[]> action)
      Beschreibung aus Schnittstelle kopiert: Stack
      A Helper function that simplifies the process of creating a new Array.
      Angegeben von:
      toArray in Schnittstelle Collection<T>
      Angegeben von:
      toArray in Schnittstelle ObjectCollection<T>
      Angegeben von:
      toArray in Schnittstelle ObjectIterable<T>
      Angegeben von:
      toArray in Schnittstelle Stack<T>
      Typparameter:
      E - the returning arrayType
      Parameter:
      action - the array creation function
      Gibt zurück:
      an array containing all of the elements in this collection
      Siehe auch:
    • size

      public int size()
      A function to return the size of the list
      Angegeben von:
      size in Schnittstelle Collection<T>
      Angegeben von:
      size in Schnittstelle ISizeProvider
      Angegeben von:
      size in Schnittstelle List<T>
      Angegeben von:
      size in Schnittstelle Stack<T>
      Angegeben von:
      size in Klasse AbstractCollection<T>
      Gibt zurück:
      the size of elements in the list
    • size

      public void size(int size)
      A function to ensure the elements are within the requested size. If smaller then the stored elements they get removed as needed. If bigger it is ensured that enough room is provided depending on the implementation
      Angegeben von:
      size in Schnittstelle ObjectList<T>
      Setzt außer Kraft:
      size in Klasse AbstractObjectList<T>
      Parameter:
      size - the requested amount of elements/room for elements
    • clear

      public void clear()
      A function to clear all elements in the list.
      Angegeben von:
      clear in Schnittstelle Collection<T>
      Angegeben von:
      clear in Schnittstelle List<T>
      Angegeben von:
      clear in Schnittstelle Stack<T>
      Setzt außer Kraft:
      clear in Klasse AbstractCollection<T>
    • trim

      public boolean trim(int size)
      Trims the original collection down to the size of the current elements or the requested size depending which is bigger
      Angegeben von:
      trim in Schnittstelle ITrimmable
      Parameter:
      size - the requested trim size.
      Gibt zurück:
      if the internal array has been trimmed.
    • clearAndTrim

      public void clearAndTrim(int size)
      Trims the collection down to the requested size and clears all elements while doing so
      Angegeben von:
      clearAndTrim in Schnittstelle ITrimmable
      Parameter:
      size - the amount of elements that should be allowed
      Note:
      this will enforce minimum size of the collection itself
    • copy

      public CopyOnWriteObjectArrayList<T> copy()
      Beschreibung aus Schnittstelle kopiert: ObjectCollection
      A Function that does a shallow clone of the Collection itself. This function is more optimized then a copy constructor since the Collection does not have to be unsorted/resorted. It can be compared to Cloneable but with less exception risk
      Angegeben von:
      copy in Schnittstelle ObjectCollection<T>
      Angegeben von:
      copy in Schnittstelle ObjectList<T>
      Setzt außer Kraft:
      copy in Klasse AbstractObjectList<T>
      Gibt zurück:
      a Shallow Copy of the collection
    • spliterator

      public ObjectSplititerator<T> spliterator()
      A Type Specific Type Splititerator to reduce boxing/unboxing
      Angegeben von:
      spliterator in Schnittstelle Collection<T>
      Angegeben von:
      spliterator in Schnittstelle Iterable<T>
      Angegeben von:
      spliterator in Schnittstelle List<T>
      Angegeben von:
      spliterator in Schnittstelle ObjectCollection<T>
      Angegeben von:
      spliterator in Schnittstelle ObjectIterable<T>
      Angegeben von:
      spliterator in Schnittstelle ObjectList<T>
      Gibt zurück:
      type specific splititerator
      Note:
      characteristics are ordered, sized, subsized