public class MWStructArray extends MWArray
MWStructArray
класс управляет собственным массивом структур MATLAB.EMPTY_ARRAY
Конструктор и описание |
---|
MWStructArray()
Создает пустой массив структур.
|
MWStructArray(int[] dims, java.lang.String[] fieldnames)
Создает новый массив структур с заданными измерениями и именами полей.
|
MWStructArray(int rows, int cols, java.lang.String[] fieldnames)
Создает новую матрицу struct с заданным количеством строк и столбцов и имен полей.
|
Модификатор и тип | Метод и описание |
---|---|
<T> T |
applyVisitor(AbstractMWArrayVisitor<T> v) |
MWClassID |
classID()
Возвращает тип MATLAB этого массива.
|
java.lang.Object |
clone()
Создает и возвращает глубокую копию этого массива.
|
int[] |
columnIndex()
Возвращает массив, содержащий индекс столбца каждого элемента в базовом массиве MATLAB.
|
int |
compareTo(java.lang.Object obj)
Сравнивает этот массив с заданным массивом для порядка точности.
|
MWArraystatic |
десериализовать(байтовые [] данные)
Создайте новый MWArray из сериализованных данных.
|
void |
dispose()
Освобождает собственный массив MATLAB, содержащийся в этом массиве.
|
boolean |
equals(java.lang.Object obj)
Указывает, равен ли какой-либо другой массив этому.
|
int |
fieldIndex(java.lang.String fieldname) |
java.lang.String[] |
fieldNames()
Возвращает имена полей в этом массиве.
|
MWStructArraystatic |
fromBean(java.lang.Object bean) |
MWStructArraystatic |
fromMap(java.util.Map < строка, объект > map) |
MWStructArraystatic |
fromProperties(реквизит java.util.Properties ) |
java.lang.Object |
get(int index)
Возвращает элемент с заданным смещением на основе 1 в этом массиве.
|
java.lang.Object |
get(int[] index)
Возвращает элемент в указанном индексном массиве на основе 1 в этом массиве.
|
java.lang.Object |
get(java.lang.String fieldname, int index)
Возвращает элемент с заданным смещением на основе 1 и именем поля в этом массиве.
|
java.lang.Object |
get(java.lang.String fieldname, int[] index)
Возвращает элемент в указанном индексном массиве на основе 1 и имя поля в этом массиве.
|
java.lang.Object |
getData()
Возвращает массив 1-D, содержащий копию данных в базовом массиве MATLAB.
|
int[] |
getDimensions()
Возвращает массив, содержащий размер каждой размерности этого массива.
|
MWArray |
getField(int индекс)
Возвращает элемент с заданным смещением на основе 1 в этом массиве как
MWArray образец. |
MWArray |
getField(int [] индекс)
Возвращает общую копию элемента в указанном 1-базовом индексном массиве в этом массиве как
MWArray образец. |
MWArray |
getField(java.lang.String имя поля, int индекс)
Возвращает общую копию элемента с заданным смещением на основе 1 и именем поля в этом массиве как
MWArray образец. |
MWArray |
getField(java.lang.String имя поля, int [] индекс)
Возвращает общую копию элемента в указанном 1-базовом индексном массиве и имя поля в этом массиве как
MWArray образец. |
int |
hashCode()
Возвращает значение хеш- код для этого массива.
|
boolean |
isEmpty()
Проверяет, не имеет ли этот массив элементов.
|
boolean |
isSparse()
Проверяет, является ли этот массив разреженным.
|
int |
maximumNonZeros()
Возвращает выделенную емкость разреженного массива.
|
int |
numberOfDimensions()
Возвращает количество размерностей этого массива.
|
int |
numberOfElements()
Возвращает общее количество элементов в этом массиве.
|
int |
numberOfFields() |
int |
numberOfNonZeros()
Возвращает количество ненулевых элементов в разреженном массиве.
|
protected java.lang.Object |
readResolve()
Вызывается механизмом сериализации при загрузке нового массива из потока байтов.
|
int[] |
rowIndex()
Возвращает массив, содержащий индекс строка каждого элемента в базовом массиве MATLAB.
|
byte[] |
serialize()
Сериализуйте массив MATLAB в байтовый массив.
|
void |
set(int[] index, java.lang.Object element)
Заменяет элемент в указанном индексном массиве на 1 в этом массиве на заданный элемент.
|
void |
set(int index, java.lang.Object element)
Заменяет элемент с заданным смещением на 1 в этом массиве на заданный элемент.
|
void |
set(java.lang.String fieldname, int[] index, java.lang.Object element)
Заменяет элемент в указанном индексном массиве на 1 и имени поля в этом массиве на указанный элемент.
|
void |
set(java.lang.String fieldname, int index, java.lang.Object element)
Заменяет элемент с заданным смещением на 1 и именем поля в этом массиве на заданный элемент.
|
void |
setData(java.lang.Object data) |
java.lang.Object |
sharedCopy()
Создает и возвращает общую копию этого массива.
|
java.lang.Object[] |
toArray()
Возвращает массив, содержащий копию данных в базовом массиве MATLAB.
|
java.lang.String |
toString()
Возвращает строку представление этого массива.
|
protected void |
validate()
Проверка указателя на внутренний массив.
|
disposeArray
public MWStructArray()
Пример: Построение объекта массива структур
В этом примере создается объект 0 на 0 MWStructArray:MWStructArray S = new MWStructArray(); System.out.println("Structure array S: " + S);При запуске в примере отображается следующий выход:
Structure array S: []
public MWStructArray(int[] dims, java.lang.String[] fieldnames)
dims
- Массив размерности размеров. Размер каждой размерности должен быть неотрицательным.fieldnames
- Массив имен полей.java.lang.NegativeArraySizeException
- Задается отрицательный размер размерности. Пример: Построение объекта массива структур
В этом примере создается объект 1 на 2 MWStructArray с полями f1, f2 и f3:String[] sfields = {"f1", "f2", "f3"}; int[] dims = new int[]{1,2}; MWStructArray S = new MWStructArray(dims, sfields); System.out.println("Structure array S: " + S);При запуске в примере отображается следующий выход:
Structure array S: 1x2 struct array with fields: f1 f2 f3
public MWStructArray(int rows, int cols, java.lang.String[] fieldnames)
rows
- Количество строк. Количество строк должно быть неотрицательным.cols
- Количество столбцов. Количество столбцов должно быть неотрицательным.fieldnames
- Массив имен полей.java.lang.NegativeArraySizeException
- Задается отрицательный размер строки или столбца. Пример: Построение объекта массива структур
В этом примере создается объект 1 на 2 MWStructArray с полями f1, f2 и f3:int rows = 1, cols = 2; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(rows, cols, sfields); System.out.println("Structure array S: " + S);При запуске в примере отображается следующий выход:
Structure array S: 1x2 struct array with fields: f1 f2 f3
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
MWStructArray
образец, представляющий глубокую копию базового массива MATLAB. Пример: Клонирование объекта массива структур
Создайте объект MWStructArray, а затем клон этого объекта:int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); Object C = S.clone(); System.out.println("Clone of structure S is:"); System.out.println(C.toString());При запуске в примере отображается следующий выход:
Clone of structure S is: 1x2 struct array with fields: f1 f2 f3
java.lang.CloneNotSupportedException
- - Класс объекта не реализует интерфейс Cloneable.public java.lang.Object sharedCopy()
MWStructArray
образец, представляющий общую копию базового массива MATLAB. Пример: Создание общей копии объекта массива структур
Создайте объект MWStructArray, а затем общую копию этого объекта:int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); Object C = S.sharedCopy(); System.out.println("Shared copy of structure S is:"); System.out.println(C.toString());При запуске в примере отображается следующий выход:
Shared copy of structure S is: 1x2 struct array with fields: f1 f2 f3
public MWClassID classID()
MWClassID.STRUCT
для MWStructArray
. Пример: Получение идентификатора класса массива структур
Создайте объект MWStructArray и отобразите идентификатор класса:int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); System.out.println("The class of S is " + S.classID());При запуске в примере отображается следующий выход:
The class of S is struct
public int numberOfFields()
Пример: Получение количества полей в массиве структур
Создайте объект MWStructArray с тремя полями и отобразите количество полей:int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); String[] str = S.fieldNames(); System.out.println("There are " + S.numberOfFields() + " fields in this structure.");При запуске в примере отображается следующий выход:
There are 3 fields in this structure.
public java.lang.String[] fieldNames()
Пример: Получение имен полей массива структур
Создайте объект MWStructArray с тремя полями и отобразите имена полей:int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); String[] str = S.fieldNames(); System.out.print("The structure has the fields: "); for (int i=0; i < S.numberOfFields(); i++) System.out.print(" " + str[i]);При запуске в примере отображается следующий выход:
The structure has the fields: f1 f2 f3
public int fieldIndex(java.lang.String fieldname)
fieldname
- имя поля для просмотраpublic void set(int index, java.lang.Object element)
index
- индекс заменяемого элемента. Допустимая область значений: 1 < = индекс < = N, где N = общее количество элементов в массиве. Общее количество элементов для массива структур = numberOfElements()
* numberOfFields()
.element
- Новый элемент для замены по индексу. Если элемент имеет тип MWArray
Значение камеры по индексу устанавливается на общую копию базового массива MATLAB. В противном случае новый массив MATLAB создается из элемента с помощью правил преобразования по умолчанию и назначается камера по индексу.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс. Пример: Установка значений в массиве структур
int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); int totNumElem = S.numberOfElements() * S.numberOfFields(); for (int i = 1; i <= totNumElem; i++) { S.set(i,i*15); } int elemCnt = 1; for(int r=1; r <= sdims[0]; r++) { for(int c=1; c <= sdims[1]; c++) { System.out.println("Element : " + elemCnt++); for(int f=0; f < sfields.length; f++) { System.out.print("\t" + sfields[f] + " : "); System.out.println(S.getField(sfields[f], new int[]{r,c})); } } }При запуске в примере отображается следующий выход:
Element : 1 f1 : 15 f2 : 30 f3 : 45 Element : 2 f1 : 60 f2 : 75 f3 : 90
public void set(int[] index, java.lang.Object element)
index
- Массив индексов, определяющих местоположение заменяемого элемента. Длина индекса массива должна быть точно numberOfDimensions()
+ 1. Первым элементом массива индексов является номер поля на основе 1 с допустимой областью значений значений 1 < = index [0] < = numberOfFields()
. Остальные значения имеют допустимые области значений: 1 < = index [i] < = N [i], где N [i] = размер i-го размерностиelement
- Новый элемент для замены по индексу. Если элемент имеет тип MWArray
Значение камеры по индексу устанавливается на общую копию базового массива MATLAB. В противном случае новый массив MATLAB создается из элемента с помощью правил преобразования по умолчанию и назначается камера по индексу.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public void set(java.lang.String fieldname, int[] index, java.lang.Object element)
fieldname
- Имя заменяемого элемента в поле.index
- Массив индексов, определяющих местоположение заменяемого элемента. Длина индекса массива должна быть точно numberOfDimensions()
. Записи массива индексов имеют допустимые области значений: 1 < = index [i] < = N [i], где N [i] = размер i-го размерностиelement
- Новый элемент для замены по индексу. Если элемент имеет тип MWArray
Значение камеры по индексу устанавливается на общую копию базового массива MATLAB. В противном случае новый массив MATLAB создается из элемента с помощью правил преобразования по умолчанию и назначается камера по индексу.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public void set(java.lang.String fieldname, int index, java.lang.Object element)
fieldname
- Имя заменяемого элемента в поле.index
- индекс заменяемого элемента. Допустимая область значений: 1 < = индекс < = N, где N = numberOfElements()
element
- Новый элемент для замены по индексу. Если элемент имеет тип MWArray
Значение камеры по индексу устанавливается на общую копию базового массива MATLAB. В противном случае новый массив MATLAB создается из элемента с помощью правил преобразования по умолчанию и назначается камера по индексу.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public java.lang.Object get(int index)
getField(index).toArray()
.index
- запрашиваемого элемента. Допустимая область значений: 1 < = индекс < = N, где N = общее количество элементов в массиве. Общее количество элементов для массива структур = numberOfElements()
* numberOfFields()
.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс. Пример: Получение данных массива структур с get
int[] cdims = {1, 3}; MWStructArray C = new MWStructArray(cdims); Integer val = new Integer(15); int[] index2 = {1, 3}; C.set(index2, val); Object x = C.get(index2); if (x instanceof int[][]) { int[][] y = (int[][])x; System.out.println("B: Cell data C(1,3) is " + y[0][0]); }При запуске в примере отображается следующий выход:
B: Cell data C(1,3) is 15
public java.lang.Object get(int[] index)
getField(index).toArray()
.index
- Массив индексов, определяющих местоположение запрашиваемого элемента. Длина индекса массива должна быть точно numberOfDimensions()
+ 1. Первым элементом массива индексов является номер поля на основе 1 с допустимой областью значений значений 1 < = index [0] < = numberOfFields()
. Остальные значения имеют допустимые области значений: 1 < = index [i] < = N [i], где N [i] = размер i-го размерностиjava.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public java.lang.Object get(java.lang.String fieldname, int[] index)
getField(fieldname, index).toArray()
.fieldname
- Имя поля запрашиваемого элемента.index
- Массив индексов, определяющих местоположение запрашиваемого элемента. Длина индекса массива должна быть точно numberOfDimensions()
. Записи массива индексов имеют допустимые области значений: 1 < = index [i] < = N [i], где N [i] = размер i-го размерностиjava.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public java.lang.Object get(java.lang.String fieldname, int index)
getField(fieldname, index).toArray()
.fieldname
- Имя поля запрашиваемого элемента.index
- запрашиваемого элемента.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public MWArray getField(int index)
MWArray
образец.index
- запрашиваемого элемента. Допустимая область значений: 1 < = индекс < = N, где N = общее количество элементов в массиве. Общее количество элементов для массива структур = numberOfElements()
* numberOfFields()
.MWArray
образец, представляющий запрашиваемое поле. Этот MWArray
ссылка должна быть утилизирована путем вызова MWArray.dispose()
.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public MWArray getField(int[] index)
MWArray
образец.index
- Массив индексов, определяющих местоположение запрашиваемого элемента. Длина индекса массива должна быть точно numberOfDimensions()
+ 1. Первым элементом массива индексов является номер поля на основе 1 с допустимой областью значений значений 1 < = index [0] < = numberOfFields()
. Остальные значения имеют допустимые области значений: 1 < = index [i] < = N [i], где N [i] = размер i-го размерностиMWArray
образец, представляющий запрашиваемое поле. Этот MWArray
ссылка должна быть утилизирована путем вызова MWArray.dispose()
.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public MWArray getField(java.lang.String fieldname, int[] index)
MWArray
образец.fieldname
- Имя поля запрашиваемого элемента.index
- Массив индексов, определяющих местоположение запрашиваемого элемента. Длина индекса массива должна быть точно numberOfDimensions()
. Записи массива индексов имеют допустимые области значений: 1 < = index [i] < = N [i], где N [i] = размер i-го размерностиMWArray
образец, представляющий запрашиваемое поле. Этот MWArray
ссылка должна быть утилизирована путем вызова MWArray.dispose()
.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public MWArray getField(java.lang.String fieldname, int index)
MWArray
образец.fieldname
- Имя поля запрашиваемого элемента.index
- запрашиваемого элемента. Допустимая область значений: 1 < = индекс < = numberOfElements()
.MWArray
образец, представляющий запрашиваемое поле. Этот MWArray
ссылка должна быть утилизирована путем вызова MWArray.dispose()
.java.lang.IndexOutOfBoundsException
- указан недопустимый индекс.public java.lang.Object getData()
MWArray.toArray()
в соответствующей камере. Пример: Получение данных массива структур с getData
Получите данные, хранящиеся во всех полях и индексах объекта MWStructArray S:int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); int count = S.numberOfElements() * S.numberOfFields(); // Initialize the structure. Integer[] val = new Integer[6]; for (int i = 0; i < count; i++) val[i] = new Integer((i+1) * 15); // Use getData to get data from the structure. System.out.println("Data read from structure array S: \n"); MWArray[] x = (MWArray[]) S.getData(); for (int i = 0; i < x.length; i++) System.out.print(" " + x[i]);При запуске в примере отображается следующий выход:
Data read from structure array S: 15 30 45 60 75 90
public java.lang.Object[] toArray()
MWArray.toArray()
в соответствующей камере. Пример: Получение данных массива структур с помощью toArray
int[] sdims = {1, 2}; String[] sfields = {"f1", "f2", "f3"}; MWStructArray S = new MWStructArray(sdims, sfields); Integer[] val = new Integer[25]; for (int i = 0; i < 6; i++) val[i] = new Integer(i * 15); for (int i = 0; i < 2; i++) for (int j = 0; j < sfields.length; j++) S.set(sfields[j], i+1, val[j + (i * 3)]); Object[][][] x = (Object[][][]) S.toArray(); System.out.println(); System.out.println("Data read from structure array S \n"); for (int j = 0; j < 2; j++) for (int i = 0; i < x.length; i++) System.out.print(" " + ((int[][]) x[i][0][j])[0][0]);При запуске в примере отображается следующий выход:
Data read from structure array S 0 15 30 45 60 75
public <T> T applyVisitor(AbstractMWArrayVisitor<T> v)
protected void validate()
public static MWStructArray fromMap(java.util.Map<java.lang.String,java.lang.Object> map) throws MWException
MWException
public static MWStructArray fromBean(java.lang.Object bean) throws java.beans.IntrospectionException, MWException
java.beans.IntrospectionException
MWException
public static MWStructArray fromProperties(java.util.Properties props)
public byte[] serialize() throws java.io.IOException
java.io.IOException
- если массив не может быть сериализован. Для примера исполняемое содержимое (указатели на функции, образцы классов) не может быть сериализовано.public static MWArray deserialize(byte[] data)
data
- сериализованный массив, возвращенный MWArray.serializepublic int numberOfDimensions()
numberOfDimensions
в классах MWArray
public int[] getDimensions()
getDimensions
в классах MWArray
public boolean isEmpty()
public boolean isSparse()
public boolean equals(java.lang.Object obj)
public int compareTo(java.lang.Object obj)
public int hashCode()
public java.lang.String toString()
public int numberOfElements()
numberOfElements
в классах MWArray
public int numberOfNonZeros()
numberOfElements()
.numberOfNonZeros
в классах MWArray
public int maximumNonZeros()
numberOfElements()
.maximumNonZeros
в классах MWArray
public void dispose()
dispose
в интерфейсных Disposable
dispose
в классах MWArray
public int[] rowIndex()
public int[] columnIndex()
columnIndex
в классах MWArray
protected java.lang.Object readResolve() throws java.io.ObjectStreamException
java.io.InvalidObjectException
- Попытка загрузить недопустимый указатель на массив.java.io.ObjectStreamException
© 1994-2017 The MathWorks, Inc. • патенты • торговые марки