diff options
Diffstat (limited to 'src/main/java/org/apache/commons/math3/util/DoubleArray.java')
-rw-r--r-- | src/main/java/org/apache/commons/math3/util/DoubleArray.java | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/main/java/org/apache/commons/math3/util/DoubleArray.java b/src/main/java/org/apache/commons/math3/util/DoubleArray.java new file mode 100644 index 0000000..f5762a9 --- /dev/null +++ b/src/main/java/org/apache/commons/math3/util/DoubleArray.java @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.math3.util; + +/** + * Provides a standard interface for double arrays. Allows different array implementations to + * support various storage mechanisms such as automatic expansion, contraction, and array "rolling". + */ +public interface DoubleArray { + + /** + * Returns the number of elements currently in the array. Please note that this may be different + * from the length of the internal storage array. + * + * @return number of elements + */ + int getNumElements(); + + /** + * Returns the element at the specified index. Note that if an out of bounds index is supplied a + * ArrayIndexOutOfBoundsException will be thrown. + * + * @param index index to fetch a value from + * @return value stored at the specified index + * @throws ArrayIndexOutOfBoundsException if <code>index</code> is less than zero or is greater + * than <code>getNumElements() - 1</code>. + */ + double getElement(int index); + + /** + * Sets the element at the specified index. If the specified index is greater than <code> + * getNumElements() - 1</code>, the <code>numElements</code> property is increased to <code> + * index +1</code> 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). + * + * @param index index to store a value in + * @param value value to store at the specified index + * @throws ArrayIndexOutOfBoundsException if <code>index</code> is less than zero. + */ + void setElement(int index, double value); + + /** + * Adds an element to the end of this expandable array + * + * @param value to be added to end of array + */ + void addElement(double value); + + /** + * Adds elements to the end of this expandable array + * + * @param values to be added to end of array + */ + void addElements(double[] values); + + /** + * 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. + * + * <p>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. + * + * @param value the value to be added to the array + * @return the value which has been discarded or "pushed" out of the array by this rolling + * insert + */ + double addElementRolling(double value); + + /** + * Returns a double[] array containing the elements of this <code>DoubleArray</code>. 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 <code>DoubleArray.</code> + * + * @return all elements added to the array + */ + double[] getElements(); + + /** Clear the double array */ + void clear(); +} |