org.python.core
public abstract class AbstractArray extends Object implements Serializable
Subclasses will want to provide the following methods (which are not declared in this class since subclasses should specify the explicit return type):
<type> get(int)
void set(int, <type>)
void add(<type>)
void add(int, <type>)
<type>[] toArray()
Clone cannot be supported since the array is not held locally. But the @link #AbstractArray(AbstractArray) constructor can be used for suclasses that need to support clone.
This "type-specific collections" approach was originally developed by Dennis Sosnoski, who provides a more complete library at the referenced URL. Sosnoski's library does not integrate with the jdk collection classes but provides collection-like classes.
Constructor Summary | |
---|---|
AbstractArray(AbstractArray toCopy)
Since AbstractArray can support a clone method, this facilitates
sublcasses that want to implement clone (poor man's cloning).
| |
AbstractArray(int size)
Use when the subclass has a preexisting array.
| |
AbstractArray(Class type)
Creates the managed array with a default size of 10.
| |
AbstractArray(Class type, int[] dimensions)
Construtor for multi-dimensional array types.
| |
AbstractArray(Class type, int size)
Creates the managed array with the specified size.
|
Method Summary | |
---|---|
void | appendArray(Object ofArrayType)
Appends the supplied array, which must be an array of the same
type as this , to the end of this .
|
void | clear()
Set the array to the empty state, clearing all the data out and
nulling objects (or "zero-ing" primitives).
|
Object | copyArray()
Constructs and returns a simple array containing the same data as held
in this growable array.
|
int | getModCountIncr()
Returns the modification count increment, which is used by
AbstractList subclasses to adjust modCount
AbstractList uses it's modCount field
to invalidate concurrent operations (like iteration) that should
fail if the underlying array changes structurally during the
operation.
|
int | getSize()
Get the number of values currently present in the array.
|
void | remove(int index)
Remove a value from the array. |
void | remove(int start, int stop)
Removes a range from the array at the specified indices. |
void | replaceSubArray(Object array, int atIndex)
Allows an array type to overwrite a segment of the array.
|
void | replaceSubArray(int thisStart, int thisStop, Object srcArray, int srcStart, int srcStop)
Replace a range of this array with another subarray. |
void | setSize(int count)
Sets the number of values currently present in the array. |
String | toString()
Provides a default comma-delimited representation of array.
|
public MyManagedArray(MyManagedArray toCopy) { super(this); this.baseArray = ()toCopy.copyArray(); this.someProp = toCopy.someProp; } public Object clone() { return new MyManagedArray(this); }
Parameters: toCopy
Parameters: size the initial size of the array
Parameters: type array element type (primitive type or object class)
char[][]
. This class only manages the
top level dimension of the array. For single dimension
arrays (the more typical usage), use the other constructors.
Parameters: type Array element type (primitive type or object class). dimensions An int array specifying the dimensions. For
a 2D array, something like new int[] {10,0}
to
create 10 elements each of which can hold an reference to an
array of the same type.
See Also: Array#newInstance(java.lang.Class, int[])
Parameters: type array element type (primitive type or object class) size number of elements initially allowed in array
this
, to the end of this
.
AbstractList
subclasses should update their
modCount
after calling this method.
Parameters: ofArrayType the array to append
Note: This method does not set modCountIncr
to
1
even though java.util.ArrayList
would.
AbstractList
subclasses should update their
modCount
after calling this method.
Returns: array containing a shallow copy of the data.
AbstractList
subclasses to adjust modCount
AbstractList
uses it's modCount
field
to invalidate concurrent operations (like iteration) that should
fail if the underlying array changes structurally during the
operation.
Returns: the modification count increment (0 if no change, 1 if changed)
Returns: count of values present
AbstractList
subclasses should always increment
their modCount
method after calling this, as
remove
always causes a structural modification.
Parameters: index index number of value to be removed
Parameters: start inclusive stop exclusive
(atIndex + 1) + ofArrayType
's length
is greater than the current length.
AbstractList
subclasses should update their
modCount
after calling this method.
Parameters: array atIndex
Parameters: thisStart the start index (inclusive) of the subarray in this array to be replaced thisStop the stop index (exclusive) of the subarray in this array to be replaced srcArray the source array from which to copy srcStart the start index (inclusive) of the replacement subarray srcStop the stop index (exclusive) of the replacement subarray
AbstractList
subclasses should update their
modCount
after calling this method.
Parameters: count number of values to be set
See Also: java.lang.Object#toString()