Class BoundedProportionalArraySizingStrategy

  • All Implemented Interfaces:
    ArraySizingStrategy

    public final class BoundedProportionalArraySizingStrategy
    extends java.lang.Object
    implements ArraySizingStrategy
    Array resizing proportional to the current buffer size, optionally kept within the given minimum and maximum growth limits. Java's ArrayList uses:
     minGrow = 1
     maxGrow = Integer.MAX_VALUE (unbounded)
     growRatio = 1.5f
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static float DEFAULT_GROW_RATIO
      Default resize is by half the current buffer's size.
      static int DEFAULT_MAX_GROW_COUNT
      Maximum grow count (unbounded).
      static int DEFAULT_MIN_GROW_COUNT
      Minimum grow count.
      float growRatio
      The current buffer length is multiplied by this ratio to get the first estimate for the new size.
      static int MAX_ARRAY_LENGTH
      Maximum allocable array length (approximately the largest positive integer decreased by the array's object header).
      int maxGrowCount
      Maximum number of elements to grow, if limit exceeded.
      int minGrowCount
      Minimum number of elements to grow, if limit exceeded.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int grow​(int currentBufferLength, int elementsCount, int expectedAdditions)
      Grow according to growRatio, minGrowCount and maxGrowCount.
      • Methods inherited from class java.lang.Object

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

      • MAX_ARRAY_LENGTH

        public static final int MAX_ARRAY_LENGTH
        Maximum allocable array length (approximately the largest positive integer decreased by the array's object header).
        See Also:
        Constant Field Values
      • DEFAULT_MIN_GROW_COUNT

        public static final int DEFAULT_MIN_GROW_COUNT
        Minimum grow count.
        See Also:
        Constant Field Values
      • DEFAULT_MAX_GROW_COUNT

        public static final int DEFAULT_MAX_GROW_COUNT
        Maximum grow count (unbounded).
        See Also:
        Constant Field Values
      • DEFAULT_GROW_RATIO

        public static final float DEFAULT_GROW_RATIO
        Default resize is by half the current buffer's size.
        See Also:
        Constant Field Values
      • minGrowCount

        public final int minGrowCount
        Minimum number of elements to grow, if limit exceeded.
      • maxGrowCount

        public final int maxGrowCount
        Maximum number of elements to grow, if limit exceeded.
      • growRatio

        public final float growRatio
        The current buffer length is multiplied by this ratio to get the first estimate for the new size. To double the size of the current buffer, for example, set to 2.
    • Constructor Detail

      • BoundedProportionalArraySizingStrategy

        public BoundedProportionalArraySizingStrategy()
        Create the default sizing strategy.
      • BoundedProportionalArraySizingStrategy

        public BoundedProportionalArraySizingStrategy​(int minGrow,
                                                      int maxGrow,
                                                      float ratio)
        Create the sizing strategy with custom policies.
        Parameters:
        minGrow - Minimum number of elements to grow by when expanding.
        maxGrow - Maximum number of elements to grow by when expanding.
        ratio - The ratio of expansion compared to the previous buffer size.
    • Method Detail

      • grow

        public int grow​(int currentBufferLength,
                        int elementsCount,
                        int expectedAdditions)
        Grow according to growRatio, minGrowCount and maxGrowCount.
        Specified by:
        grow in interface ArraySizingStrategy
        Parameters:
        currentBufferLength - The current length of the buffer.
        elementsCount - The number of elements stored in the buffer.
        expectedAdditions - The number of expected additions to the buffer.
        Returns:
        New buffer size.