All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.algart.arrays.UpdatablePArray Maven / Gradle / Ivy

Go to download

Open-source Java libraries, supporting generalized smart arrays and matrices with elements of any types, including a wide set of 2D-, 3D- and multidimensional image processing and other algorithms, working with arrays and matrices.

The newest version!
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2007-2024 Daniel Alievsky, AlgART Laboratory (http://algart.net)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package net.algart.arrays;

/**
 * 

AlgART array of primitive elements (boolean, char, byte, short, int, long, float or double), * read/write access, no resizing.

* *

Any class implementing this interface must implement one of * {@link UpdatableBitArray}, {@link UpdatableCharArray}, * {@link UpdatableByteArray}, {@link UpdatableShortArray}, * {@link UpdatableIntArray}, {@link UpdatableLongArray}, * {@link UpdatableFloatArray}, {@link UpdatableDoubleArray} * subinterfaces.

* * @author Daniel Alievsky */ public interface UpdatablePArray extends PArray, UpdatableArray { /** * Sets the element #index with conversion from double, * as (xxx)value for numeric element type xxx * (byte, short, int, long, * float, double or char), * or as value!=0.0 for boolean element type. * *

Depending on the specific subinterface implemented by the object, * this method is equivalent to one of the following calls:

* *
    *
  • for {@link UpdatableBitArray}: * {@link UpdatableBitArray#setBit(long, boolean) setBit}(index, value != 0.0);
  • *
  • for {@link UpdatableCharArray}: * {@link UpdatableCharArray#setChar(long, char) setChar}(index, (char) value);
  • *
  • for {@link UpdatableByteArray}: * {@link UpdatableByteArray#setByte(long, byte) setByte}(index, (byte) value);
  • *
  • for {@link UpdatableShortArray}: * {@link UpdatableShortArray#setShort(long, short) setShort}(index, (short) value);
  • *
  • for {@link UpdatableLongArray}: * {@link UpdatableLongArray#setLong(long, long) setLong}(index, (long) value);
  • *
  • for {@link UpdatableFloatArray}: * {@link UpdatableFloatArray#setFloat(long, float) setFloat}(index, (float) value);
  • *
  • for {@link UpdatableDoubleArray}: the same method is already declared in this interface.
  • *
* * @param index index of the element to replace. * @param value element to be stored at the specified position. * @throws IndexOutOfBoundsException if index out of range 0..length()-1. * @see #getDouble(long) */ void setDouble(long index, double value); /** * Sets the element #index with conversion from long, * as (xxx)value for numeric element type xxx * (byte, short, int, long, * float, double or char), * or as value!=0 for boolean element type. * *

Depending on the specific subinterface implemented by the object, * this method is equivalent to one of the following calls:

* *
    *
  • for {@link UpdatableBitArray}: * {@link UpdatableBitArray#setBit(long, boolean) setBit}(index, value != 0);
  • *
  • for {@link UpdatableCharArray}: * {@link UpdatableCharArray#setChar(long, char) setChar}(index, (char) value);
  • *
  • for {@link UpdatableByteArray}: * {@link UpdatableByteArray#setByte(long, byte) setByte}(index, (byte) value);
  • *
  • for {@link UpdatableShortArray}: * {@link UpdatableShortArray#setShort(long, short) setShort}(index, (short) value);
  • *
  • for {@link UpdatableLongArray}: the same method is already declared in this interface;
  • *
  • for {@link UpdatableFloatArray}: * {@link UpdatableFloatArray#setFloat(long, float) setFloat}(index, (float) value);
  • *
  • for {@link UpdatableDoubleArray}: * {@link UpdatableDoubleArray#setDouble(long, double) setDouble}(index, (double) value).
  • *
* * @param index index of the element to replace. * @param value element to be stored at the specified position. * @throws IndexOutOfBoundsException if index out of range 0..length()-1. * @see PFixedArray#getLong(long) */ void setLong(long index, long value); /** * Sets the element #index with conversion from int, * as (xxx)value for numeric element type xxx * (byte, short, int, long, * float, double or char), * or as value!=0 for boolean element type. * *

This method is equivalent to both {@link #setLong(long, long) setLong(index, (long) value)} * and {@link #setDouble(long, double) setDouble(index, (double) value)}, but can work little faster. * * @param index index of the element to replace. * @param value element to be stored at the specified position. * @throws IndexOutOfBoundsException if index out of range 0..length()-1. * @see PFixedArray#getInt(long) */ void setInt(long index, int value); /** * Fills all elements of this array with the specified value. Equivalent to * {@link #fill(long, long, double) fill}(0, thisArray.length(), value). * * @param value the value to be stored in all elements of the array. * @return a reference to this array. * @see #fill(long, long, double) * @see Arrays#zeroFill(UpdatableArray) */ UpdatablePArray fill(double value); /** * Fills count elements of this array, starting from position index, * by the specified value. Equivalent to the following loop:

     * for (long k = 0; k < count; k++) {
     *     {@link #setDouble(long, double) setDouble}(position + k, value);
     * }
* but works much faster and checks indexes * (and throws possible IndexOutOfBoundsException) in the very beginning. * * @param position start index (inclusive) to be filled. * @param count number of filled elements. * @param value the value to be stored in the elements of the array. * @return a reference to this array. * @throws IndexOutOfBoundsException for illegal position and count * (position < 0 || count < 0 * || position + count > length()). * @see #fill(double) * @see Arrays#zeroFill(UpdatableArray) */ UpdatablePArray fill(long position, long count, double value); /** * Fills all the elements of this array by the specified value. Equivalent to * {@link #fill(long, long, long) fill}(0, thisArray.length(), value). * * @param value the value to be stored in all elements of the array. * @return a reference to this array. * @see #fill(long, long, long) * @see Arrays#zeroFill(UpdatableArray) */ UpdatablePArray fill(long value); /** * Fills count elements of this array, starting from position index, * by the specified value. Equivalent to the following loop:
     * for (long k = 0; k < count; k++) {
     *     {@link #setLong(long, long) setLong}(position + k, value);
     * }
* but works much faster and checks indexes * (and throws possible IndexOutOfBoundsException) in the very beginning. * * @param position start index (inclusive) to be filled. * @param count number of filled elements. * @param value the value to be stored in the elements of the array. * @return a reference to this array. * @throws IndexOutOfBoundsException for illegal position and count * (position < 0 || count < 0 * || position + count > length()). * @see #fill(long) * @see Arrays#zeroFill(UpdatableArray) */ UpdatablePArray fill(long position, long count, long value); Class updatableType(); UpdatablePArray subArray(long fromIndex, long toIndex); UpdatablePArray subArr(long position, long count); UpdatablePArray asUnresizable(); default Matrix matrix(long... dim) { return Matrices.matrix(this, dim); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy