Класс DoubleBuffer
- java.lang.Object
-
- java.nio.Buffer
-
- java.nio.DoubleBuffer
- Все реализованные интерфейсы:
- Comparable<DoubleBuffer>
public abstract class DoubleBuffer extends Buffer implements Comparable<DoubleBuffer>
Двойной буфер.
Этот класс определяет четыре категории операций над двойными буферами:
Абсолютные и относительные методы
getиput, которые читают и записывают отдельные двойные значения;Относительные методы
bulk get, которые передают непрерывные последовательности двойных значений из этого буфера в массив; иОтносительные методы
bulk put, которые передают непрерывные последовательности двойных значений из массива двойных значений или другого двойного буфера в этот буфер; иМетоды для
compacting,duplicatingиslicingдвойного буфера.
Двойные буферы могут быть созданы либо с помощью allocation, который выделяет память для содержимого буфера, либо путем обертывания существующего массива double в буфер с помощью wrapping, или путем создания представления существующего байтового буфера.
Как и байтовый буфер, двойной буфер может быть либо прямым, либо непрямым. Двойной буфер, созданный с помощью методов этого класса, будет непрямым. Двойной буфер, созданный как представление байтового буфера, будет прямым только в том случае, если сам байтовый буфер является прямым. Можно определить, является ли двойной буфер прямым, вызвав метод isDirect.
Методы в этом классе, не возвращающие явно значения, возвращают буфер, на котором они вызваны. Это позволяет цепочку вызовов методов.
- С:
- 1.4
Методы
| Модификатор и тип | Метод и описание |
|---|---|
static DoubleBuffer |
allocate(int capacity) Выделяет новый двойной буфер. |
double[] |
array() Возвращает массив двойных значений, лежащий в основе этого буфера (необязательная операция). |
int |
arrayOffset() Возвращает смещение в массиве, лежащем в основе этого буфера, первого элемента буфера (необязательная операция). |
abstract DoubleBuffer |
asReadOnlyBuffer() Создает новый, только для чтения двойной буфер, разделяющий содержимое этого буфера. |
abstract DoubleBuffer |
compact() Уплотняет этот буфер (необязательная операция). |
int |
compareTo(DoubleBuffer that) Сравнивает этот буфер с другим. |
abstract DoubleBuffer |
duplicate() Создает новый двойной буфер, разделяющий содержимое этого буфера. |
boolean |
equals(Object ob) Указывает, равен ли этот буфер другому объекту. |
abstract double |
get() Относительный метод get. |
DoubleBuffer |
get(double[] dst) Относительный метод get для блоков данных. |
DoubleBuffer |
get(double[] dst,
int offset,
int length) Относительный метод get для блоков данных. |
abstract double |
get(int index) Абсолютный метод get. |
boolean |
hasArray() Указывает, поддерживается ли этот буфер доступным массивом двойных значений. |
int |
hashCode() Возвращает текущий хэш-код этого буфера. |
abstract boolean |
isDirect() Указывает, является ли этот двойной буфер прямым. |
abstract ByteOrder |
order() Получает порядок байтов этого буфера. |
abstract DoubleBuffer |
put(double d) Относительный метод put (необязательная операция). |
DoubleBuffer |
put(double[] src) Относительный метод put для блоков данных (необязательная операция). |
DoubleBuffer |
put(double[] src,
int offset,
int length) Относительный метод put для блоков данных (необязательная операция). |
DoubleBuffer |
put(DoubleBuffer src) Относительный метод put для блоков данных (необязательная операция). |
abstract DoubleBuffer |
put(int index,
double d) Абсолютный метод put (необязательная операция). |
abstract DoubleBuffer |
slice() Создает новый двойной буфер, содержащий совместно используемую подпоследовательность содержимого этого буфера. |
String |
toString() Возвращает строку, обобщающую состояние этого буфера. |
static DoubleBuffer |
wrap(double[] array) Оборачивает массив двойных значений в буфер. |
static DoubleBuffer |
wrap(double[] array,
int offset,
int length) Оборачивает массив двойных значений в буфер. |
Методы, унаследованные от класса java.nio.Buffer
capacity, clear, flip, hasRemaining, isReadOnly, limit, limit, mark, position, position, remaining, reset, rewind Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Методы
allocate
public static DoubleBuffer allocate(int capacity)
Выделяет новый буфер double.
Позиция нового буфера будет равна нулю, его предел будет равен его емкости, метка будет неопределённой, и каждый его элемент будет инициализирован нулём. Он будет иметь backing array, и его array offset будет равен нулю.
- Параметры:
-
capacity- Емкость нового буфера, в значениях типа double - Возвращает:
- Новый буфер double
- Исключение:
-
IllegalArgumentException- Еслиcapacityявляется отрицательным целым числом
wrap
public static DoubleBuffer wrap(double[] array,
int offset,
int length) Оборачивает массив double в буфер.
Новый буфер будет поддерживаться заданным массивом double; то есть, изменения в буфере приведут к изменению массива и наоборот. Емкость нового буфера будет array.length, его позиция будет offset, его предел будет offset + length, а его метка будет неопределённой. Его backing array будет заданным массивом, а его array offset будет равен нулю.
- Параметры:
-
array- Массив, который будет поддерживать новый буфер -
offset- Смещение подмассива для использования; должно быть неотрицательным и не большеarray.length. Позиция нового буфера будет установлена в это значение. -
length- Длина подмассива для использования; должна быть неотрицательной и не большеarray.length - offset. Предел нового буфера будет установлен вoffset + length. - Возвращает:
- Новый буфер double
- Исключение:
-
IndexOutOfBoundsException- Если условия на параметрыoffsetиlengthне соблюдаются
wrap
public static DoubleBuffer wrap(double[] array)
Оборачивает массив double в буфер.
Новый буфер будет поддерживаться заданным массивом double; то есть, изменения в буфере приведут к изменению массива и наоборот. Емкость и предел нового буфера будут array.length, его позиция будет нулевой, а его метка будет неопределённой. Его backing array будет заданным массивом, а его array offset> будет равен нулю.
- Параметры:
-
array- Массив, который будет поддерживать этот буфер - Возвращает:
- Новый буфер double
slice
public abstract DoubleBuffer slice()
Создаёт новый буфер double, чьё содержимое является общей подпоследовательностью содержимого этого буфера.
Содержимое нового буфера начнётся с текущей позиции этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и метки двух буферов будут независимыми.
Позиция нового буфера будет нулевой, его емкость и предел будут равны количеству значений double, оставшихся в этом буфере, а его метка будет неопределённой. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения, тогда и только тогда, когда этот буфер является только для чтения.
- Возвращает:
- Новый буфер double
duplicate
public abstract DoubleBuffer duplicate()
Создаёт новый буфер double, который разделяет содержимое этого буфера.
Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и метки двух буферов будут независимыми.
Значения емкости, предела, позиции и метки нового буфера будут идентичны значениям этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения, тогда и только тогда, когда этот буфер является только для чтения.
- Возвращает:
- Новый буфер double
asReadOnlyBuffer
public abstract DoubleBuffer asReadOnlyBuffer()
Создаёт новый, только для чтения буфер double, который разделяет содержимое этого буфера.
Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере; однако сам новый буфер будет только для чтения и не позволит изменять общее содержимое. Значения позиции, предела и метки двух буферов будут независимыми.
Значения емкости, предела, позиции и метки нового буфера будут идентичны значениям этого буфера.
Если этот буфер сам является только для чтения, то этот метод ведет себя точно так же, как метод duplicate.
- Возвращает:
- Новый буфер double, только для чтения
get
public abstract double get()
Относительный метод get. Читает значение double в текущей позиции буфера и затем увеличивает позицию.
- Возвращает:
- Значение double в текущей позиции буфера
- Исключение:
-
BufferUnderflowException- Если текущая позиция буфера не меньше его предела
put
public abstract DoubleBuffer put(double d)
Относительный метод put (необязательная операция).
Записывает заданное значение double в этот буфер в текущей позиции и затем увеличивает позицию.
- Параметры:
-
d- Значение double для записи - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException- Если текущая позиция этого буфера не меньше его предела -
ReadOnlyBufferException- Если этот буфер является только для чтения
get
public abstract double get(int index)
Абсолютный метод get. Читает значение double по заданному индексу.
- Параметры:
-
index- Индекс, по которому будет считано значение double - Возвращает:
- Значение double по заданному индексу
- Исключение:
-
IndexOutOfBoundsException- Еслиindexотрицательно или не меньше предела буфера
put
public abstract DoubleBuffer put(int index,
double d) Абсолютный метод put (необязательная операция).
Записывает заданное значение double в этот буфер по заданному индексу.
- Параметры:
-
index- Индекс, по которому будет записано значение double -
d- Значение double для записи - Возвращает:
- Этот буфер
- Исключение:
-
IndexOutOfBoundsException- Еслиindexотрицательно или не меньше предела буфера -
ReadOnlyBufferException- Если этот буфер является только для чтения
get
public DoubleBuffer get(double[] dst,
int offset,
int length) Относительный метод get для обработки нескольких значений.
Этот метод копирует значения double из этого буфера в заданный массив назначения. Если оставшихся значений double в буфере меньше, чем требуется для выполнения запроса, то есть, если length > remaining(), то значения double не копируются и выбрасывается исключение BufferUnderflowException.
В противном случае этот метод копирует length значений double из этого буфера в заданный массив, начиная с текущей позиции этого буфера и с заданного смещения в массиве. Позиция этого буфера увеличивается на length.
Другими словами, вызов этого метода в виде src.get(dst, off, len) имеет точно такой же эффект, как цикл
for (int i = off; i < off + len; i++)
dst[i] = src.get(): за исключением того, что он сначала проверяет, достаточно ли значений double в этом буфере, и он потенциально гораздо эффективнее.- Параметры:
-
dst- Массив, в который будут записаны значения double -
offset- Смещение в массиве первого значения double для записи; должно быть неотрицательным и не большеdst.length -
length- Максимальное количество значений double, которые будут записаны в заданный массив; должно быть неотрицательным и не большеdst.length - offset - Возвращает:
- Этот буфер
- Исключение:
-
BufferUnderflowException- Если оставшихся значений double в этом буфере меньше, чемlength -
IndexOutOfBoundsException- Если условия на параметрыoffsetиlengthне соблюдаются
get
public DoubleBuffer get(double[] dst)
Относительный метод get для обработки нескольких значений.
Этот метод копирует значения double из этого буфера в заданный массив назначения. Вызов этого метода в виде src.get(a) ведет себя точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst- Массив назначения - Возвращает:
- Этот буфер
- Исключение:
-
BufferUnderflowException- Если оставшихся значений double в этом буфере меньше, чемlength
put
public DoubleBuffer put(DoubleBuffer src)
Относительный метод put для обработки нескольких значений (необязательная операция).
Этот метод копирует оставшиеся значения double из заданного буфера-источника в этот буфер. Если оставшихся значений double в буфере-источнике больше, чем в этом буфере, то есть, если src.remaining() > remaining(), то значения double не копируются и выбрасывается исключение BufferOverflowException.
В противном случае этот метод копирует n = src.remaining() значений double из заданного буфера в этот буфер, начиная с текущей позиции каждого буфера. Позиции обоих буферов затем увеличиваются на n.
Другими словами, вызов этого метода в виде dst.put(src) имеет точно такой же эффект, как цикл
while (src.hasRemaining())
dst.put(src.get()); за исключением того, что он сначала проверяет, достаточно ли места в этом буфере, и он потенциально гораздо эффективнее.- Параметры:
-
src- Буфер-источник, из которого будут считаны значения double; не должен быть этим буфером - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException- Если в этом буфере недостаточно места для оставшихся значений double в буфере-источнике -
IllegalArgumentException- Если буфер-источник является этим буфером -
ReadOnlyBufferException- Если этот буфер является только для чтения
put
public DoubleBuffer put(double[] src,
int offset,
int length) Метод put для пакетной обработки относительных данных (дополнительная операция).
Этот метод копирует значения типа double из заданного массива в этот буфер. Если в массиве значений double больше, чем места в этом буфере, то есть, если length > remaining(), то значения не копируются, и выбрасывается исключение BufferOverflowException.
В противном случае, этот метод копирует length значения double из заданного массива в этот буфер, начиная с заданного смещения в массиве и текущей позиции в этом буфере. Позиция этого буфера затем увеличивается на length.
Другими словами, вызов этого метода в форме dst.put(src, off, len) имеет точно такой же эффект, как цикл
for (int i = off; i < off + len; i++)
dst.put(a[i]); за исключением того, что он сначала проверяет наличие достаточного места в этом буфере, и потенциально может быть гораздо эффективнее.- Параметры:
-
src- Массив, из которого считываются значения типа double -
offset- Смещение в массиве первого значения типа double для чтения; должно быть неотрицательным и не превышатьarray.length -
length- Количество значений типа double для чтения из заданного массива; должно быть неотрицательным и не превышатьarray.length - offset - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException- Если в этом буфере недостаточно места -
IndexOutOfBoundsException- Если условия на параметрыoffsetиlengthне выполняются -
ReadOnlyBufferException- Если этот буфер только для чтения
put
public final DoubleBuffer put(double[] src)
Метод put для пакетной обработки относительных данных (дополнительная операция).
Этот метод копирует все содержимое заданного массива значений double в этот буфер. Вызов этого метода в форме dst.put(a) ведет себя точно так же, как вызов
dst.put(a, 0, a.length)
- Параметры:
-
src- Источник массива - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException- Если в этом буфере недостаточно места -
ReadOnlyBufferException- Если этот буфер только для чтения
hasArray
public final boolean hasArray()
Указывает, поддерживается ли этот буфер доступным массивом значений double.
Если этот метод возвращает true, то методы array и arrayOffset могут быть безопасно вызваны.
- Определено в:
-
hasArrayв классеBuffer - Возвращает:
-
trueтолько в том случае, если этот буфер поддерживается массивом и не является только для чтения
array
public final double[] array()
Возвращает массив значений double, поддерживающий этот буфер (дополнительная операция).
Изменения в содержимом этого буфера приведут к изменению содержимого возвращаемого массива и наоборот.
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный поддерживающий массив.
- Определено в:
-
arrayв классеBuffer - Возвращает:
- Массив, поддерживающий этот буфер
- Исключение:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
arrayOffset
public final int arrayOffset()
Возвращает смещение в поддерживающем массиве этого буфера первого элемента буфера (дополнительная операция).
Если этот буфер поддерживается массивом, то позиция буфера p соответствует индексу массива p + arrayOffset().
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный поддерживающий массив.
- Определено в:
-
arrayOffsetв классеBuffer - Возвращает:
- Смещение в массиве этого буфера первого элемента буфера
- Исключение:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
compact
public abstract DoubleBuffer compact()
Уплотняет этот буфер (дополнительная операция).
Значения double между текущей позицией буфера и его пределом, если таковые имеются, копируются в начало буфера. То есть, значение double с индексом p = position() копируется в индекс ноль, значение double с индексом p + 1 копируется в индекс один и так далее, пока значение double с индексом limit() - 1 не скопируется в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается в n+1, а предел — в его емкость. Отметка, если она определена, отбрасывается.
Позиция буфера устанавливается в количество скопированных значений double, а не в ноль, так что за вызовом этого метода может сразу последовать вызов другого метода относительной записи.
- Возвращает:
- Этот буфер
- Исключение:
-
ReadOnlyBufferException- Если этот буфер только для чтения
isDirect
public abstract boolean isDirect()
Указывает, является ли этот буфер значений double прямым.
toString
public String toString()
Возвращает строку, обобщающую состояние этого буфера.
hashCode
public int hashCode()
Возвращает текущий код хэша этого буфера.
Код хэша буфера значений double зависит только от оставшихся элементов; то есть, от элементов от position() до, и включая, элемент с limit() - 1.
Поскольку коды хэша буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в хэш-картах или подобных структурах данных, если не известно, что их содержимое не будет изменяться.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Текущий код хэша этого буфера
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
equals
public boolean equals(Object ob)
Указывает, равен ли этот буфер другому объекту.
Два буфера значений double равны тогда и только тогда, когда
У них одинаковый тип элементов,
У них одинаковое количество оставшихся элементов, и
Две последовательности оставшихся элементов, рассматриваемые независимо от их начальных позиций, точечно равны. Этот метод рассматривает два элемента типа double
aиbкак равные, если(a == b) || (Double.isNaN(a) && Double.isNaN(b)). Значения-0.0и+0.0считаются равными, в отличие отDouble.equals(Object).
Буфер значений double не равен ни одному другому типу объекта.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
ob- Объект, с которым сравнивается этот буфер - Возвращает:
-
trueесли, и только если, этот буфер равен данному объекту - См. также:
-
Object.hashCode(),HashMap
compareTo
public int compareTo(DoubleBuffer that)
Сравнивает этот буфер с другим.
Два буфера значений double сравниваются путём сравнения их последовательностей оставшихся элементов лексикографически, не учитывая начальную позицию каждой последовательности в соответствующем буфере. Пары элементов double сравниваются как если бы был вызван Double.compare(double,double), за исключением того, что -0.0 и 0.0 считаются равными. Double.NaN считается этим методом равным самому себе и больше всех других значений double (включая Double.POSITIVE_INFINITY).
Буфер значений double не сравним ни с каким другим типом объекта.
- Определено в:
-
compareToв интерфейсеComparable<DoubleBuffer> - Параметры:
-
that- сравниваемый объект. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше ли, равен ли или больше ли этот буфер, чем данный буфер
order
public abstract ByteOrder order()
Извлекает порядок байтов этого буфера.
Порядок байтов буфера значений double, созданного путём выделения или путём обертывания существующего массива double, — это порядок native order базового оборудования. Порядок байтов буфера значений double, созданного в виде представления буфера байтов, — это порядок байтового буфера в момент создания представления.
- Возвращает:
- Порядок байтов этого буфера
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.