public class PyArray extends PySequence implements java.lang.Cloneable, BufferProtocol, Traverseproc
array.array
. This is a wrapper around native Java arrays. Instances of
PyArray
are created either by Java functions or directly by the jarray
module
(q.v.).
The range of possible element (item) types exceeds that in Python, since it allows for arbitrary Java classes. This extended behaviour is accessible from Python by supplying a Java type (class) to the constructor, where one might have used a single character type code. For example:
>>> ax = array.array(BigDecimal, (BigDecimal(str(n)) for n in range(5))) >>> ax array(java.math.BigDecimal, [0, 1, 2, 3, 4]) >>> type(ax[2]) <type 'java.math.BigDecimal'>
typecode | Python type | Java type | serialised size | signed |
---|---|---|---|---|
b |
int |
byte |
1 | |
B |
int |
byte |
1 | unsigned |
h |
int |
short |
2 | |
H |
int |
short |
2 | unsigned |
i |
int |
int |
4 | |
I |
long |
int |
4 | unsigned |
l |
long |
long |
8 | |
L |
long |
long |
8 | unsigned |
f |
float |
float |
4 | |
d |
float |
double |
8 | |
c |
str |
byte |
1 | unsigned |
u |
unicode |
int |
1 | unsigned |
z |
bool |
boolean |
1 |
PyObject.ConversionException
Modifier and Type | Field and Description |
---|---|
static PyType |
TYPE |
gcMonitorGlobal
Constructor and Description |
---|
PyArray(java.lang.Class<?> itemClass,
int n)
Create a
PyArray with the given array item class and number of zero or null
elements. |
PyArray(java.lang.Class<?> itemClass,
java.lang.Object data)
Create a
PyArray with the given array item class and content. |
PyArray(java.lang.Class<?> itemClass,
PyObject initial)
Create a
PyArray with the given array item class and content initialised from a
Python object (iterable). |
PyArray(PyArray toCopy)
Create a
PyArray as a copy of another. |
PyArray(PyType subtype)
Create a default
PyArray of specific Python type (for sub-class use). |
Modifier and Type | Method and Description |
---|---|
PyObject |
__add__(PyObject other)
Equivalent to the standard Python __add__ method.
|
PyObject |
__iadd__(PyObject other)
Equivalent to the standard Python __iadd__ method.
|
PyObject |
__imul__(PyObject o)
Equivalent to the standard Python __imul__ method.
|
int |
__len__()
Length of the array (as the number of elements, not a storage size).
|
PyObject |
__mul__(PyObject o)
Equivalent to the standard Python __mul__ method.
|
PyObject |
__reduce__()
Used for pickling.
|
PyObject |
__rmul__(PyObject o)
Equivalent to the standard Python __rmul__ method.
|
java.lang.Object |
__tojava__(java.lang.Class<?> c)
Equivalent to the Jython __tojava__ method.
|
void |
append(PyObject value)
Append new value x to the end of the array.
|
PyObject |
array___iter__() |
void |
array_append(PyObject value) |
void |
array_byteswap() |
static java.lang.Class<?> |
array_class(java.lang.Class<?> type) |
int |
array_count(PyObject value) |
void |
array_extend(PyObject iterable) |
void |
array_fromfile(PyObject f,
int count) |
void |
array_fromlist(PyObject obj) |
int |
array_index(PyObject value) |
void |
array_insert(int index,
PyObject value) |
PyObject |
array_pop(int i)
Removes the item at the index
i from the array and returns it. |
void |
array_remove(PyObject value) |
void |
array_reverse() |
void |
array_tofile(PyObject f) |
PyObject |
array_tolist() |
PyObject |
array_tostring() |
PyUnicode |
array_tounicode() |
void |
array_write(PyObject f) |
static PyArray |
array(PyObject seq,
char typecode)
Create a
PyArray with the given array item type and content initialised from a Python
object (iterable). |
static PyArray |
array(PyObject init,
java.lang.Class<?> itemClass)
Create a
PyArray storing ctype types and being initialised with init . |
void |
byteswap()
"Byteswap" all items of the array.
|
static java.lang.Class<?> |
char2class(char typecode)
Converts a character code for the array type to the Java
Class of the elements of the
implementation array. |
java.lang.Object |
clone()
Implementation of
Cloneable interface. |
PyInteger |
count(PyObject value)
Return the number of occurrences of x in the array.
|
void |
extend(PyObject iterable)
Append items from
iterable to the end of the array. |
int |
fillFromStream(java.io.InputStream is)
Fill the current array with primitive values (of the type the array holds) from a stream,
starting at array index zero, up to the capacity of the array, without resizing.
|
void |
fromfile(PyObject f,
int count)
Read
count items (as machine values) from the file object f and append them
to the end of the array. |
void |
fromlist(PyObject obj)
Append items from the list.
|
int |
fromstring(int start,
java.lang.String input)
Read primitive values from a stream into a slice of the array, defined by a start and the
number of items encoded in the bytes.
|
void |
fromstring(PyObject input)
Append items from the object, which is a byte string of some kind (
PyString or object
with the buffer interface providing bytes). |
void |
fromstring(java.lang.String input)
Append items from the string, interpreting the string as an array of bytes (as if it had been
read from a file using the
fromfile() method). |
void |
fromunicode(PyUnicode input) |
java.lang.Object |
getArray()
Return the internal Java array storage of the
PyArray instance |
PyBuffer |
getBuffer(int flags)
Method by which the consumer requests the buffer from the exporter.
|
int |
getItemsize()
Getter for the item size of the array element type.
|
int |
getStorageSize()
Deprecated.
Use
getItemsize() instead which (since 2.7.3) gives the same result. |
java.lang.String |
getTypecode()
Return either a Python-style
array.array type code for the element (item) type or the
Java class name. |
int |
hashCode() |
PyObject |
index(PyObject value)
Return the smallest i such that i is the index of the first occurrence of
value in the array. |
void |
insert(int index,
PyObject value)
Insert a new item with value
value in the array before position index . |
PyObject |
pop()
Removes the last item from the array and return it.
|
PyObject |
pop(int index)
Removes the item with the index
index from the array and returns it. |
boolean |
refersDirectlyTo(PyObject ob)
Optional operation.
|
void |
remove(PyObject value)
Remove the first occurrence of
value from the array. |
void |
reverse()
Reverse the elements in the array
|
void |
set(int i,
byte value)
Set element in an array of element type 'b','B', or 'c' to a Java
byte . |
void |
set(int i,
char value)
Set element to integer value given as a Java
char , tolerating primitive integer
values in arrays of Unicode character, int or long . |
void |
set(int i,
int value)
Set element to integer value, tolerating primitive integer values in arrays of Unicode
character,
int or long . |
void |
set(int i,
PyObject value)
Set an element in the array - the index needs to exist, this method does not automatically
extend the array.
|
void |
tofile(PyObject f)
Write all items (as machine values) to the file object
f . |
PyObject |
tolist()
Convert the array to an ordinary list with the same items.
|
int |
toStream(java.io.OutputStream os)
Generic stream writer to write the entire contents of the array to the stream as primitive
types.
|
java.lang.String |
tostring()
Convert the array to an array of machine values and return the string representation (the
same sequence of bytes that would be written to a file by the
tofile() method.) |
java.lang.String |
toString() |
java.lang.String |
tounicode() |
int |
traverse(Visitproc visit,
java.lang.Object arg)
Traverses all directly contained
PyObject s. |
static PyArray |
zeros(int n,
char typecode)
Create a
PyArray with the given array type code and number of zero elements. |
static PyArray |
zeros(int n,
java.lang.Class<?> itemClass)
Create a
PyArray with the given array item class and number of zero or null
elements. |
__delitem__, __delslice__, __eq__, __finditem__, __finditem__, __ge__, __getitem__, __getslice__, __gt__, __iter__, __le__, __lt__, __ne__, __nonzero__, __setitem__, __setitem__, __setslice__, isMappingType, isNumberType, isSequenceType
__abs__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __cmp__, __coerce__, __coerce_ex__, __complex__, __contains__, __delattr__, __delattr__, __delete__, __delitem__, __delslice__, __dir__, __div__, __divmod__, __ensure_finalizer__, __findattr__, __findattr__, __findattr_ex__, __finditem__, __float__, __floordiv__, __format__, __get__, __getattr__, __getattr__, __getitem__, __getnewargs__, __getslice__, __hash__, __hex__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iternext__, __itruediv__, __ixor__, __long__, __lshift__, __mod__, __neg__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rdiv__, __rdivmod__, __reduce_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __setslice__, __str__, __sub__, __truediv__, __trunc__, __unicode__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _xor, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, getDict, getType, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType
public static final PyType TYPE
public PyArray(PyType subtype)
PyArray
of specific Python type (for sub-class use).subtype
- actual Python typepublic PyArray(java.lang.Class<?> itemClass, java.lang.Object data)
PyArray
with the given array item class and content. If itemClass
is
one of the primitive types used to implement the "single letter" type codes, the type code of
the array will be a signed zero of that item class.itemClass
- of elements in the arraydata
- content arraypublic PyArray(java.lang.Class<?> itemClass, PyObject initial)
PyArray
with the given array item class and content initialised from a
Python object (iterable).itemClass
- of elements in the arrayinitial
- provider of initial contentspublic PyArray(java.lang.Class<?> itemClass, int n)
PyArray
with the given array item class and number of zero or null
elements. If itemClass
is one of the primitive types used to implement the "single
letter" type codes, the type code of the array will be a signed zero of that item class.itemClass
- of elements in the arrayn
- number of (zero or null
) elementspublic PyArray(PyArray toCopy)
PyArray
as a copy of another.toCopy
- the other arraypublic static PyArray zeros(int n, char typecode)
PyArray
with the given array type code and number of zero elements.typecode
- of elements in the arrayn
- number of (zero or null
) elementspublic static PyArray zeros(int n, java.lang.Class<?> itemClass)
PyArray
with the given array item class and number of zero or null
elements. If itemClass
is one of the primitive types used to implement the "single
letter" type codes, the type code of the array will be a signed zero of that item class.itemClass
- n
- number of (zero or null
) elementspublic static PyArray array(PyObject seq, char typecode)
PyArray
with the given array item type and content initialised from a Python
object (iterable).seq
- to suply contenttypecode
- public static java.lang.Class<?> array_class(java.lang.Class<?> type)
public static PyArray array(PyObject init, java.lang.Class<?> itemClass)
PyArray
storing ctype
types and being initialised with init
.init
- an initialiser for the array - can be PyString
or PySequence
(including PyArray
) or iterable type.itemClass
- Class
of the elements stored in the array.public PyObject array___iter__()
public PyObject __imul__(PyObject o)
PyObject
public PyObject __mul__(PyObject o)
PyObject
public PyObject __rmul__(PyObject o)
PyObject
public PyObject __iadd__(PyObject other)
PyObject
public PyObject __add__(PyObject other)
PyObject
public int __len__()
public PyObject __reduce__()
PyObject
__reduce__
in class PyObject
public java.lang.Object __tojava__(java.lang.Class<?> c)
PyObject
Py.NoConversion
if this
PyObject
can not be converted to the desired Java class.__tojava__
in class PySequence
c
- target Class
for the conversionpublic final void array_append(PyObject value)
public void append(PyObject value)
value
- item to be appended to the arraypublic void array_byteswap()
public void byteswap()
RuntimeError
is raised. It is useful when
reading data from a file written on a machine with a different byte order.public java.lang.Object clone()
Cloneable
interface.clone
in class java.lang.Object
public static java.lang.Class<?> char2class(char typecode) throws PyIgnoreMethodTag
Class
of the elements of the
implementation array.typecode
- character code for the array typeClass
of the native itemClassPyIgnoreMethodTag
public final int array_count(PyObject value)
public PyInteger count(PyObject value)
value
- instances of the value to be countedpublic final void array_extend(PyObject iterable)
public void extend(PyObject iterable)
iterable
to the end of the array. If iterable is another array, it
must have exactly the same type code; if not, TypeError will be raised. If iterable is not an
array, it must be iterable and its elements must be the right type to be appended to the
array.iterable
- iterable object used to extend the arraypublic final void array_fromfile(PyObject f, int count)
public void fromfile(PyObject f, int count)
count
items (as machine values) from the file object f
and append them
to the end of the array. If less than count
items are available, EOFError is raised,
but the items that were available are still inserted into the array. f
must be a real
built-in file object; something else with a read() method won't do.f
- Python builtin file object to retrieve datacount
- number of array elements to readpublic final void array_fromlist(PyObject obj)
public void fromlist(PyObject obj)
for x in list: a.append(x)
except
that if there is a type error, the array is unchanged.obj
- input list object that will be appended to the arraypublic int fillFromStream(java.io.InputStream is) throws java.io.IOException
is
- InputStream to source the data fromjava.io.IOException
- reflecting I/O errors during readingpublic void fromstring(PyObject input)
PyString
or object
with the buffer interface providing bytes). The string of bytes is interpreted as an array of
machine values (as if it had been read from a file using the fromfile()
method).input
- string of bytes containing array datapublic void fromstring(java.lang.String input)
fromfile()
method). The bytes
encode primitive values of the type appropriate to the array,input
- string of bytes containing array datapublic int fromstring(int start, java.lang.String input)
fromfile()
method). The bytes encode
primitive values of the type appropriate to the array,start
- first element index to read intoinput
- string of bytes containing array data=count
, if not ended by EOF)public void fromunicode(PyUnicode input)
public java.lang.Object getArray() throws PyIgnoreMethodTag
PyArray
instanceArray
store.PyIgnoreMethodTag
public int getItemsize()
The sizes returned by this method represent the number of bytes used to store the type. In the case of streams of primitive values, this is the number of bytes written to, or read from a stream. The amount of memory occupied by each item is an internal matter for Java.
This method is used by other methods to define read/write quanta from strings and streams.
@Deprecated public int getStorageSize()
getItemsize()
instead which (since 2.7.3) gives the same result.public java.lang.String getTypecode()
array.array
type code for the element (item) type or the
Java class name.public final int array_index(PyObject value)
public PyObject index(PyObject value)
value
in the array.value
- value to find the index ofvalue
public final void array_insert(int index, PyObject value)
public void insert(int index, PyObject value)
value
in the array before position index
.
Negative values are treated as being relative to the end of the array.index
- insert positionvalue
- value to be inserted into arraypublic final PyObject array_pop(int i)
i
from the array and returns it. The optional argument
defaults to -1, so that by default the last item is removed and returned.public PyObject pop()
public PyObject pop(int index)
index
from the array and returns it.index
- array location to be popped from the arraypublic final void array_remove(PyObject value)
public void remove(PyObject value)
value
from the array.value
- array value to be removedpublic final void array_reverse()
public void reverse()
public void set(int i, PyObject value)
AbstractArray.setSize()
or
AbstractArray.ensureCapacity()
for ways to extend
capacity.
This code specifically checks for overflows of the integral types: byte, short, int and long.
i
- index of the element to be setvalue
- value to set the element topublic void set(int i, int value)
int
or long
. Negative values assigned to unsigned elements adopt
their wrapped unsigned values.i
- index to setvalue
- to setpublic void set(int i, char value)
char
, tolerating primitive integer
values in arrays of Unicode character, int
or long
.i
- index to setvalue
- to setpublic void set(int i, byte value)
byte
.i
- index to setvalue
- to setpublic final void array_tofile(PyObject f)
public void array_write(PyObject f)
public void tofile(PyObject f)
f
.f
- Python builtin file object to write datapublic final PyObject array_tolist()
public PyObject tolist()
public int toStream(java.io.OutputStream os) throws java.io.IOException
os
- OutputStream to sink the array data tojava.io.IOException
public final PyObject array_tostring()
public java.lang.String tostring()
tofile()
method.)public final PyUnicode array_tounicode()
public java.lang.String tounicode()
public PyBuffer getBuffer(int flags)
PyBuffer.release()
on the buffer it obtained, or PyBuffer.close()
using
try-with-resources, since some objects alter their behaviour while buffers are exported.
The PyBuffer
returned from this method is a one-dimensional array of single byte
items that allows modification of the object state. The existence of this export prohibits
resizing the array. This prohibition is not only on the consumer of the view but extends
to operations on the underlying array, such as insert(int, PyObject)
or
pop()
.
getBuffer
in interface BufferProtocol
flags
- specifying features demanded and the navigational capabilities of the consumerpublic int traverse(Visitproc visit, java.lang.Object arg)
Traverseproc
PyObject
s.
Like in CPython, arg
must be passed
unmodified to visit
as its second parameter.
If Visitproc.visit(PyObject, Object)
returns
nonzero, this return value
must be returned immediately by traverse.
Visitproc.visit(PyObject, Object)
must not be
called with a null
PyObject-argument.traverse
in interface Traverseproc
public boolean refersDirectlyTo(PyObject ob) throws java.lang.UnsupportedOperationException
Traverseproc
Traverseproc.traverse(Visitproc, Object)
with
a visitproc that just watches out for ob
.
Must return false
if ob
is null
.refersDirectlyTo
in interface Traverseproc
java.lang.UnsupportedOperationException