Package com.carrotsearch.hppc
Class BoundedProportionalArraySizingStrategy
- java.lang.Object
-
- com.carrotsearch.hppc.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'sArrayList
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.
-
Constructor Summary
Constructors Constructor Description BoundedProportionalArraySizingStrategy()
Create the default sizing strategy.BoundedProportionalArraySizingStrategy(int minGrow, int maxGrow, float ratio)
Create the sizing strategy with custom policies.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
grow(int currentBufferLength, int elementsCount, int expectedAdditions)
-
-
-
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 to2
.
-
-
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)
- Specified by:
grow
in interfaceArraySizingStrategy
- 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.
-
-