AlgART Home

net.algart.arrays
Interface UpdatablePArray

All Superinterfaces:
Array, ArrayExchanger, PArray, UpdatableArray
All Known Subinterfaces:
MutableBitArray, MutableByteArray, MutableCharArray, MutableDoubleArray, MutableFloatArray, MutableIntArray, MutableLongArray, MutablePArray, MutablePFixedArray, MutablePFloatingArray, MutablePIntegerArray, MutablePNumberArray, MutableShortArray, UpdatableBitArray, UpdatableByteArray, UpdatableCharArray, UpdatableDoubleArray, UpdatableFloatArray, UpdatableIntArray, UpdatableLongArray, UpdatablePFixedArray, UpdatablePFloatingArray, UpdatablePIntegerArray, UpdatablePNumberArray, UpdatableShortArray
All Known Implementing Classes:
AbstractUpdatableBitArray, AbstractUpdatableByteArray, AbstractUpdatableCharArray, AbstractUpdatableDoubleArray, AbstractUpdatableFloatArray, AbstractUpdatableIntArray, AbstractUpdatableLongArray, AbstractUpdatableShortArray

public interface UpdatablePArray
extends PArray, UpdatableArray

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 UpdatableBitArray, UpdatableCharArray, UpdatableByteArray, UpdatableShortArray, UpdatableIntArray, UpdatableLongArray, UpdatableFloatArray, UpdatableDoubleArray subinterfaces.

AlgART Laboratory 2007-2013

Since:
JDK 1.5
Version:
1.2
Author:
Daniel Alievsky

Method Summary
Modifier and Type Method and Description
 UpdatablePArray asUnresizable()
          Returns an unresizable view of this array.
 UpdatablePArray fill(double value)
          Fills all elements of this array by the specified value.
 UpdatablePArray fill(long value)
          Fills all elements of this array by the specified value.
 UpdatablePArray fill(long position, long count, double value)
          Fills count elements of this array, starting from position index, by the specified value.
 UpdatablePArray fill(long position, long count, long value)
          Fills count elements of this array, starting from position index, by the specified value.
 void setDouble(long index, double value)
          Sets the element #index by convertion 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.
 void setInt(long index, int value)
          Equivalent to setLong(index, (long)value), but may work little faster.
 void setLong(long index, long value)
          Sets the element #index by convertion 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.
 UpdatablePArray subArr(long position, long count)
          Equivalent to subArray(position, position + count).
 UpdatablePArray subArray(long fromIndex, long toIndex)
          Returns a view of the portion of this array between fromIndex, inclusive, and toIndex, exclusive.
 java.lang.Class<? extends UpdatablePArray> updatableType()
          Returns the canonical updatable AlgART type of arrays with the same element types: the class of one of 9 basic interfaces, describing all kinds of updatable AlgART arrays for 8 primitive and any non-primitive element types.
 
Methods inherited from interface net.algart.arrays.PArray
asImmutable, asTrustedImmutable, bitsPerElement, getDouble, indexOf, isZeroFilled, lastIndexOf, maxPossibleValue, minPossibleValue, mutableClone, mutableType, type, updatableClone
 
Methods inherited from interface net.algart.arrays.UpdatableArray
asCopyOnNextWrite, copy, copy, copy, setData, setData, setElement, setNonNew, shallowClone, swap, swap, swap
 
Methods inherited from interface net.algart.arrays.Array
buffer, buffer, buffer, buffer, byteOrder, capacity, checkUnallowedMutation, elementType, equals, flushResources, flushResources, freeResources, freeResources, getData, getData, getElement, hashCode, isCopyOnNextWrite, isImmutable, isLazy, isNew, isNewReadOnlyView, isUnresizable, length, loadResources, newJavaArray, toString
 

Method Detail

setDouble

void setDouble(long index,
               double value)
Sets the element #index by convertion 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.

Parameters:
index - index of element to replace.
value - element to be stored at the specified position.
Throws:
java.lang.IndexOutOfBoundsException - if index out of range 0..length()-1.
See Also:
PArray.getDouble(long)

setLong

void setLong(long index,
             long value)
Sets the element #index by convertion 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.

Parameters:
index - index of element to replace.
value - element to be stored at the specified position.
Throws:
java.lang.IndexOutOfBoundsException - if index out of range 0..length()-1.
See Also:
PFixedArray.getLong(long)

setInt

void setInt(long index,
            int value)
Equivalent to setLong(index, (long)value), but may work little faster.

Parameters:
index - index of element to replace.
value - element to be stored at the specified position.
Throws:
java.lang.IndexOutOfBoundsException - if index out of range 0..length()-1.
See Also:
PFixedArray.getInt(long)

fill

UpdatablePArray fill(double value)
Fills all elements of this array by the specified value. Equivalent to fill(0, thisArray.length(), value).

Parameters:
value - the value to be stored in all elements of the array.
Returns:
a reference to this array.
See Also:
fill(long, long, double), Arrays.zeroFill(UpdatableArray)

fill

UpdatablePArray fill(long position,
                     long count,
                     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++) {
     setDouble(position + k, value);
 }
but works much faster and checks indexes (and throws possible IndexOutOfBoundsException) in the very beginning.

Parameters:
position - start index (inclusive) to be filled.
count - number of filled elements.
value - the value to be stored in the elements of the array.
Returns:
a reference to this array.
Throws:
java.lang.IndexOutOfBoundsException - for illegal position and count (position < 0 || count < 0 || position + count > length()).
See Also:
fill(double), Arrays.zeroFill(UpdatableArray)

fill

UpdatablePArray fill(long value)
Fills all elements of this array by the specified value. Equivalent to fill(0, thisArray.length(), value).

Parameters:
value - the value to be stored in all elements of the array.
Returns:
a reference to this array.
See Also:
fill(long, long, long), Arrays.zeroFill(UpdatableArray)

fill

UpdatablePArray fill(long position,
                     long count,
                     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++) {
     setLong(position + k, value);
 }
but works much faster and checks indexes (and throws possible IndexOutOfBoundsException) in the very beginning.

Parameters:
position - start index (inclusive) to be filled.
count - number of filled elements.
value - the value to be stored in the elements of the array.
Returns:
a reference to this array.
Throws:
java.lang.IndexOutOfBoundsException - for illegal position and count (position < 0 || count < 0 || position + count > length()).
See Also:
fill(long), Arrays.zeroFill(UpdatableArray)

updatableType

java.lang.Class<? extends UpdatablePArray> updatableType()
Description copied from interface: Array
Returns the canonical updatable AlgART type of arrays with the same element types: the class of one of 9 basic interfaces, describing all kinds of updatable AlgART arrays for 8 primitive and any non-primitive element types. More precisely, returns:

There is a guarantee that this method works very quickly (usually it just returns a constant value).

Specified by:
updatableType in interface Array
Specified by:
updatableType in interface PArray
Returns:
canonical AlgART type of an updatable array of the same kind.

subArray

UpdatablePArray subArray(long fromIndex,
                         long toIndex)
Description copied from interface: Array
Returns a view of the portion of this array between fromIndex, inclusive, and toIndex, exclusive.

Like List.subList method, this method eliminates the need for explicit range operations. For example, you may use Arrays.sort(UpdatableArray, ArrayComparator) method for sorting a fragment of the array.

Unlike List.subList, the semantics of the array returned by this method is well-defined in any case, even in case of resizing of the source array. Namely, if the internal storage of this or returned array is reallocated, then the returned array will cease to be a view of this array. The only possible reasons for reallocation are the following: calling MutableArray.length(long), MutableArray.ensureCapacity(long) or MutableArray.trim() methods for this array, or any modification of this or returned array in a case when this array is copy-on-next-write. Also, if the length of this array will be reduced, it can lead to clearing some elements in returned array: see comments to MutableArray.length(long) method.

Specified by:
subArray in interface Array
Specified by:
subArray in interface UpdatableArray
Parameters:
fromIndex - low endpoint (inclusive) of the subarray.
toIndex - high endpoint (exclusive) of the subarray.
Returns:
a view of the specified range within this array.
See Also:
Array.subArr(long, long)

subArr

UpdatablePArray subArr(long position,
                       long count)
Description copied from interface: Array
Equivalent to subArray(position, position + count). The only possible difference is other exception messages. If position+count>Long.MAX_VALUE (overflow), an exception message is allowed to be not fully correct (maximal speed is more important than absolutely correct exception messages for such exotic situations).

Specified by:
subArr in interface Array
Specified by:
subArr in interface UpdatableArray
Parameters:
position - start position (inclusive) of the subarray.
count - number of elements in the subarray.
Returns:
a view of the specified range within this array.
See Also:
Array.subArray(long, long)

asUnresizable

UpdatablePArray asUnresizable()
Description copied from interface: UpdatableArray
Returns an unresizable view of this array. If this array is not resizable already, returns a reference to this object. Query operations on the returned array "read through" and "write through" to this array.

The returned view (when it is not a reference to this object) contains the same elements as this array, but independent length, start offset, capacity, copy-on-next-write and possible other information about array characteristics besides its elements, as for UpdatableArray.shallowClone() method. If modifications of this or returned array characteristics lead to reallocation of the internal storage, then the returned array ceases to be a view of this array. The only possible reasons for reallocation are the following: calling MutableArray.length(long), MutableArray.ensureCapacity(long) or MutableArray.trim() methods for this array, or any modification of this or returned array in a case when this array is copy-on-next-write.

Resizable arrays, created by this package, implement full MutableArray interface, but unresizable ones implement only its UpdatableArray superinterface.

Specified by:
asUnresizable in interface UpdatableArray
Returns:
an unresizable view of this array.
See Also:
Array.isUnresizable()