/** * Create a ResizableArray with the specified properties. * * <p>Throws IllegalArgumentException if the following conditions are not met: * * <ul> * <li><code>initialCapacity > 0</code> * <li><code>expansionFactor > 1</code> * <li><code>contractionFactor >= expansionFactor</code> * <li><code>expansionMode in {MULTIPLICATIVE_MODE, ADDITIVE_MODE}</code> * </ul> * * @param initialCapacity the initial size of the internal storage array * @param expansionFactor the array will be expanded based on this parameter * @param contractionCriteria the contraction Criteria * @param expansionMode the expansion mode * @throws IllegalArgumentException if parameters are not valid */ public ResizableDoubleArray( int initialCapacity, float expansionFactor, float contractionCriteria, int expansionMode) { this.expansionFactor = expansionFactor; setContractionCriteria(contractionCriteria); setInitialCapacity(initialCapacity); setExpansionMode(expansionMode); internalArray = new double[initialCapacity]; }