Package org.apache.commons.math3.util

# Interface DoubleArray

All Known Implementing Classes:
  `ResizableDoubleArray`

public interface DoubleArray
Provides a standard interface for double arrays. Allows different array implementations to support various storage mechanisms such as automatic expansion, contraction, and array "rolling".

## Method Summary

Modifier and Type
Method
Description
`void`
`addElement(double value)`
Adds an element to the end of this expandable array
`double`
`addElementRolling(double value)`
Adds an element to the end of the array and removes the first element in the array.
`void`
`addElements(double[] values)`
Adds elements to the end of this expandable array
`void`
`clear()`
Clear the double array
`double`
`getElement(int index)`
Returns the element at the specified index.
`double[]`
`getElements()`
Returns a double[] array containing the elements of this `DoubleArray`.
`int`
`getNumElements()`
Returns the number of elements currently in the array.
`void`
`setElement(int index, double value)`
Sets the element at the specified index.

## Method Details

### getNumElements

int getNumElements()
Returns the number of elements currently in the array. Please note that this may be different from the length of the internal storage array.

Returns:
  number of elements

### getElement

double getElement(int index)
Returns the element at the specified index. Note that if an out of bounds index is supplied a ArrayIndexOutOfBoundsException will be thrown.

Parameters:
  `index` - index to fetch a value from
Returns:
  value stored at the specified index
Throws:
  `ArrayIndexOutOfBoundsException` - if `index` is less than zero or is greater than `getNumElements() - 1`.

### setElement

void setElement(int index, double value)
Sets the element at the specified index. If the specified index is greater than `getNumElements() - 1`, the `numElements` property is increased to `index +1` and additional storage is allocated (if necessary) for the new element and all (uninitialized) elements between the new element and the previous end of the array).

Parameters:
  `index` - index to store a value in
  `value` - value to store at the specified index
Throws:
  `ArrayIndexOutOfBoundsException` - if `index` is less than zero.

### addElement

void addElement(double value)
Adds an element to the end of this expandable array

Parameters:
  `value` - to be added to end of array

### addElements

void addElements(double[] values)
Adds elements to the end of this expandable array

Parameters:
  `values` - to be added to end of array

### addElementRolling

double addElementRolling(double value)

Adds an element to the end of the array and removes the first element in the array. Returns the discarded first element. The effect is similar to a push operation in a FIFO queue.

Example: If the array contains the elements 1, 2, 3, 4 (in that order) and addElementRolling(5) is invoked, the result is an array containing the entries 2, 3, 4, 5 and the value returned is 1.

Parameters:
  `value` - the value to be added to the array
Returns:
  the value which has been discarded or "pushed" out of the array by this rolling insert

### getElements

double[] getElements()
Returns a double[] array containing the elements of this `DoubleArray`. If the underlying implementation is array-based, this method should always return a copy, rather than a reference to the underlying array so that changes made to the returned array have no effect on the `DoubleArray.`

Returns:
  all elements added to the array

### clear

void clear()
Clear the double array