Class DynamicPrimitiveLongList

  • All Implemented Interfaces:
    java.lang.Iterable<java.lang.Long>, java.util.Collection<java.lang.Long>, java.util.List<java.lang.Long>

    public class DynamicPrimitiveLongList
    extends java.util.AbstractList<java.lang.Long>
    A resizable list for storing primitive `long` values.

    This class implements a dynamically resizable list specifically for primitive long values. The values are stored in a chain of arrays (named sub-array), so it can grow efficiently, by adding more sub-arrays per its defined size. The backing array also helps avoid auto-boxing and helps provide access to values as primitives without boxing.

    The list is designed to minimize memory allocations, by:

    1. Adding sub-arrays and not creating new arrays and copying.
    2. When the size is changing to a smaller size, arrays are not removed.

    Supported List<Long> methods:

    • get(int) - Retrieves the element at the specified position in this list as a Long object.
    • set(int, Long) - Replaces the element at the specified position in this list with the specified Long object.
    • size() - Returns the number of elements in this list.

    Additional utility methods:

    • getLong(int) - Retrieves the element at the specified position in this list as a primitive long.
    • setLong(int, long) - Replaces the element at the specified position in this list with the specified primitive long element.
    • resizeAndClear(int) - Resizes the list to the specified size, resetting all elements to zero.

    This class is internal and is hence not for public use. Its APIs are unstable and can change at any time.

    This class is not thread-safe.

    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static DynamicPrimitiveLongList empty()  
      private void ensureCapacity​(int minCapacity)  
      java.lang.Long get​(int index)  
      long getLong​(int index)  
      static DynamicPrimitiveLongList of​(long... values)  
      static DynamicPrimitiveLongList ofSubArrayCapacity​(int subarrayCapacity)  
      private java.lang.String outOfBoundsMsg​(int index)  
      private void rangeCheck​(int index)  
      void resizeAndClear​(int newSize)  
      java.lang.Long set​(int index, java.lang.Long element)  
      long setLong​(int index, long element)  
      int size()  
      • Methods inherited from class java.util.AbstractList

        add, add, addAll, clear, equals, hashCode, indexOf, iterator, lastIndexOf, listIterator, listIterator, remove, removeRange, 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.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.List

        addAll, contains, containsAll, isEmpty, remove, removeAll, replaceAll, retainAll, sort, spliterator, toArray, toArray
    • Field Detail

      • DEFAULT_SUBARRAY_CAPACITY

        private static final int DEFAULT_SUBARRAY_CAPACITY
        See Also:
        Constant Field Values
      • subarrayCapacity

        private final int subarrayCapacity
      • arrays

        private long[][] arrays
      • size

        private int size
      • arrayCount

        private int arrayCount
    • Constructor Detail

      • DynamicPrimitiveLongList

        DynamicPrimitiveLongList()
      • DynamicPrimitiveLongList

        DynamicPrimitiveLongList​(int subarrayCapacity)
    • Method Detail

      • get

        public java.lang.Long get​(int index)
        Specified by:
        get in interface java.util.List<java.lang.Long>
        Specified by:
        get in class java.util.AbstractList<java.lang.Long>
      • getLong

        public long getLong​(int index)
      • set

        public java.lang.Long set​(int index,
                                  java.lang.Long element)
        Specified by:
        set in interface java.util.List<java.lang.Long>
        Overrides:
        set in class java.util.AbstractList<java.lang.Long>
      • setLong

        public long setLong​(int index,
                            long element)
      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<java.lang.Long>
        Specified by:
        size in interface java.util.List<java.lang.Long>
        Specified by:
        size in class java.util.AbstractCollection<java.lang.Long>
      • resizeAndClear

        public void resizeAndClear​(int newSize)
      • ensureCapacity

        private void ensureCapacity​(int minCapacity)
      • rangeCheck

        private void rangeCheck​(int index)
      • outOfBoundsMsg

        private java.lang.String outOfBoundsMsg​(int index)