Класс DoubleBuffer
- Все реализуемые интерфейсы:
Comparable<DoubleBuffer>
public abstract sealed class DoubleBuffer extends Buffer implements Comparable<DoubleBuffer>
Этот класс определяет четыре категории операций с буферами типа double:
Абсолютные и относительные методы
getиput, которые считывают и записывают отдельные значения типа double;Абсолютные и относительные методы
bulk get, которые передают непрерывные последовательности значений типа double из этого буфера в массив;Абсолютные и относительные методы
bulk put, которые передают непрерывные последовательности значений типа double из массива типа double или другого буфера типа double в этот буфер;Метод для
compactingбуфера типа double.
Буферы типа double можно создавать с помощью allocation, который выделяет пространство для содержимого буфера, с помощью wrapping существующего массива типа double в буфер или путем создания представления существующего байтового буфера.
Как и байтовый буфер, буфер типа double может быть прямым или непрямым. Буфер типа double, созданный с помощью методов wrap этого класса, будет непрямым. Буфер типа double, созданный как представление байтового буфера, будет прямым тогда и только тогда, когда сам байтовый буфер является прямым. Определить, является ли буфер типа double прямым, можно вызовом метода isDirect.
Методы этого класса, для которых не предусмотрено иного возвращаемого значения, возвращают буфер, для которого они были вызваны. Это позволяет объединять вызовы методов в цепочки.
Необязательные операции
Методы, указанные как необязательные операции, при вызове для буфера только для чтения DoubleBuffer выбрасывают исключение ReadOnlyBufferException. Методы array и arrayOffset выбрасывают исключение UnsupportedOperationException, если DoubleBuffer не поддерживается доступным массивом типа double (независимо от того, доступен ли DoubleBuffer только для чтения).- С версии:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static DoubleBuffer |
allocate |
Выделяет новый буфер типа double. |
final double[] |
array() |
Возвращает массив типа double, на котором основан этот буфер (необязательная операция). |
final int |
arrayOffset() |
Возвращает смещение первого элемента буфера относительно базового массива этого буфера (необязательная операция). |
abstract DoubleBuffer |
asReadOnlyBuffer() |
Создает новый буфер типа double только для чтения, совместно использующий содержимое этого буфера. |
final DoubleBuffer |
clear() |
Очищает этот буфер. |
abstract DoubleBuffer |
compact() |
Компактно упаковывает этот буфер (необязательная операция). |
int |
compareTo |
Сравнивает этот буфер с другим. |
abstract DoubleBuffer |
duplicate() |
Создает новый буфер типа double, совместно использующий содержимое этого буфера. |
boolean |
equals |
Определяет, равен ли этот буфер другому объекту. |
final DoubleBuffer |
flip() |
Переворачивает этот буфер. |
abstract double |
get() |
Относительный метод get. |
DoubleBuffer |
get |
Относительный пакетный метод get. |
DoubleBuffer |
get |
Относительный пакетный метод get. |
abstract double |
get |
Абсолютный метод get. |
DoubleBuffer |
get |
Абсолютный пакетный метод get. |
DoubleBuffer |
get |
Абсолютный пакетный метод get. |
final boolean |
hasArray() |
Определяет, основан ли этот буфер на доступном массиве типа double. |
int |
hashCode() |
Возвращает текущий хеш-код этого буфера. |
abstract boolean |
isDirect() |
Определяет, является ли этот буфер типа double прямым. |
final DoubleBuffer |
limit |
Устанавливает предел этого буфера. |
final DoubleBuffer |
mark() |
Устанавливает отметку буфера на его текущей позиции. |
int |
mismatch |
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером. |
abstract ByteOrder |
order() |
Возвращает порядок байтов этого буфера. |
final DoubleBuffer |
position |
Устанавливает позицию этого буфера. |
abstract DoubleBuffer |
put |
Относительный метод put (необязательная операция). |
final DoubleBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
DoubleBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
abstract DoubleBuffer |
put |
Абсолютный метод put (необязательная операция). |
DoubleBuffer |
put |
Абсолютный пакетный метод put (необязательная операция). |
DoubleBuffer |
put |
Абсолютный пакетный метод put (необязательная операция). |
DoubleBuffer |
put |
Абсолютный пакетный метод put (необязательная операция). |
DoubleBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
final DoubleBuffer |
reset() |
Устанавливает позицию этого буфера на ранее отмеченную позицию. |
final DoubleBuffer |
rewind() |
Перематывает этот буфер в начало. |
abstract DoubleBuffer |
slice() |
Создает новый буфер типа double, содержимое которого представляет собой совместно используемую подпоследовательность содержимого этого буфера. |
abstract DoubleBuffer |
slice |
Создает новый буфер типа double, содержимое которого представляет собой совместно используемую подпоследовательность содержимого этого буфера. |
String |
toString() |
Возвращает строку с кратким описанием состояния этого буфера. |
static DoubleBuffer |
wrap |
Оборачивает массив типа double в буфер. |
static DoubleBuffer |
wrap |
Оборачивает массив типа double в буфер. |
Методы, объявленные в классе Buffer
capacity, hasRemaining, isReadOnly, limit, position, remaining | Модификатор и тип | Метод | Описание |
|---|---|---|
final int |
capacity() |
Возвращает емкость этого буфера. |
final boolean |
hasRemaining() |
Определяет, есть ли элементы между текущей позицией и пределом. |
abstract boolean |
isReadOnly() |
Определяет, доступен ли этот буфер только для чтения. |
final int |
limit() |
Возвращает предел этого буфера. |
final int |
position() |
Возвращает позицию этого буфера. |
final int |
remaining() |
Возвращает количество элементов между текущей позицией и пределом. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо истечения заданного промежутка реального времени. |
Подробное описание методов
allocate
public static DoubleBuffer allocate(int capacity)
Позиция нового буфера будет равна нулю, его предел будет равен его ёмкости, его отметка будет не определена, каждый его элемент будет инициализирован нулём, а порядок байтов будет соответствовать native order базового оборудования. У него будет backing array, а его array offset будет равен нулю.
- Параметры:
-
capacity— ёмкость нового буфера в значениях double - Возвращает:
- Новый буфер double
- Вызывает исключение:
-
IllegalArgumentException— еслиcapacityявляется отрицательным целым числом
wrap
public static DoubleBuffer wrap(double[] array, int offset, int length)
Новый буфер будет использовать указанный массив double в качестве хранилища; то есть изменения буфера будут изменять массив, и наоборот. Ёмкость нового буфера будет равна array.length, его позиция будет равна offset, его предел будет равен offset + length, его отметка будет не определена, а порядок байтов будет соответствовать native order базового оборудования. Его 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 в качестве хранилища; то есть изменения буфера будут изменять массив, и наоборот. Ёмкость и предел нового буфера будут равны array.length, его позиция будет равна нулю, его отметка будет не определена, а порядок байтов будет соответствовать native order базового оборудования. Его backing array будет указанным массивом, а его array offset будет равен нулю.
- Параметры:
-
array— массив, который будет использоваться в качестве хранилища этого буфера - Возвращает:
- Новый буфер double
slice
public abstract DoubleBuffer slice()
Содержимое нового буфера будет начинаться с текущей позиции этого буфера. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимы.
Позиция нового буфера будет равна нулю, его ёмкость и предел будут равны количеству значений double, оставшихся в этом буфере, его отметка будет не определена, а порядок байтов будет таким же, как у этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.
slice
public abstract DoubleBuffer slice(int index, int length)
Содержимое нового буфера будет начинаться с позиции index в этом буфере и включать length элементов. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимы.
Позиция нового буфера будет равна нулю, его ёмкость и предел будут равны length, его отметка будет не определена, а порядок байтов будет таким же, как у этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.
- Определено в:
-
sliceв классеBuffer - Параметры:
-
index— позиция в этом буфере, с которой будет начинаться содержимое нового буфера; должна быть неотрицательной и не превышатьlimit() -
length— количество элементов в новом буфере; должно быть неотрицательным и не превышатьlimit() - index - Возвращает:
- Новый буфер
- Вызывает исключение:
-
IndexOutOfBoundsException— еслиindexотрицательно или большеlimit(),lengthотрицательно илиlength > limit() - index - С версии:
- 13
duplicate
public abstract DoubleBuffer duplicate()
Содержимое нового буфера будет совпадать с содержимым этого буфера. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимы.
Значения ёмкости, предела, позиции, отметки и порядка байтов нового буфера будут совпадать с соответствующими значениями этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.
asReadOnlyBuffer
public abstract DoubleBuffer asReadOnlyBuffer()
Содержимое нового буфера будет совпадать с содержимым этого буфера. Изменения содержимого этого буфера будут видны в новом буфере; однако сам новый буфер будет доступен только для чтения и не позволит изменить общее содержимое. Значения позиции, предела и отметки двух буферов будут независимы.
Значения ёмкости, предела, позиции, отметки и порядка байтов нового буфера будут совпадать с соответствующими значениями этого буфера.
Если этот буфер уже доступен только для чтения, данный метод работает точно так же, как метод duplicate.
- Возвращает:
- Новый буфер double, доступный только для чтения
get
public abstract double get()
- Возвращает:
- Значение double в текущей позиции буфера
- Вызывает исключение:
-
BufferUnderflowException— если текущая позиция буфера не меньше его предела
put
public abstract DoubleBuffer put(double d)
Записывает указанное значение double в этот буфер в текущей позиции, а затем увеличивает позицию.
- Параметры:
-
d— значение double для записи - Возвращает:
- Этот буфер
- Вызывает исключение:
-
BufferOverflowException— если текущая позиция этого буфера не меньше его предела -
ReadOnlyBufferException— если этот буфер доступен только для чтения
get
public abstract double get(int index)
- Параметры:
-
index— индекс, по которому будет считано значение double - Возвращает:
- Значение double по указанному индексу
- Вызывает исключение:
-
IndexOutOfBoundsException— еслиindexотрицательно или не меньше предела буфера
put
public abstract DoubleBuffer put(int index, double d)
Записывает указанное значение double в этот буфер по указанному индексу.
- Параметры:
-
index— индекс, по которому будет записано значение double -
d— значение double для записи - Возвращает:
- Этот буфер
- Вызывает исключение:
-
IndexOutOfBoundsException— еслиindexотрицательно или не меньше предела буфера -
ReadOnlyBufferException— если этот буфер доступен только для чтения
get
public DoubleBuffer get(double[] dst, int offset, int length)
Этот метод переносит значения 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();
- Параметры:
-
dst— массив, в который записываются значения double -
offset— смещение в массиве, начиная с которого будет записано первое значение double; должно быть неотрицательным и не превышатьdst.length -
length— максимальное количество значений double для записи в указанный массив; должно быть неотрицательным и не превышатьdst.length - offset - Возвращает:
- Этот буфер
- Вызывает исключение:
-
BufferUnderflowException— если в этом буфере осталось меньшеlengthзначений double -
IndexOutOfBoundsException— если не выполнены предварительные условия для параметровoffsetиlength
get
public DoubleBuffer get(double[] dst)
Этот метод переносит значения double из этого буфера в указанный массив назначения. Вызов этого метода в форме src.get(a) работает точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst— массив назначения - Возвращает:
- Этот буфер
- Вызывает исключение:
-
BufferUnderflowException— если в этом буфере осталось меньшеlengthзначений double
get
public DoubleBuffer get(int index, double[] dst, int offset, int length)
Этот метод переносит length значений double из этого буфера в указанный массив, начиная с указанного индекса в этом буфере и указанного смещения в массиве. Позиция этого буфера не меняется.
Вызов этого метода в форме src.get(index, dst, offset, length) имеет точно такой же эффект, как следующий цикл, за исключением того, что сначала проверяется согласованность переданных параметров; кроме того, этот метод потенциально намного эффективнее:
for (int i = offset, j = index; i < offset + length; i++, j++)
dst[i] = src.get(j);
- Параметры:
-
index— индекс в этом буфере, откуда будет считано первое значение double; должен быть неотрицательным и меньшеlimit() -
dst— массив назначения -
offset— смещение в массиве, начиная с которого будет записано первое значение double; должно быть неотрицательным и меньшеdst.length -
length— количество значений double для записи в указанный массив; должно быть неотрицательным и не превышать меньшее из значенийlimit() - indexиdst.length - offset - Возвращает:
- Этот буфер
- Вызывает исключение:
-
IndexOutOfBoundsException— если не выполнены предварительные условия для параметровindex,offsetиlength - С версии:
- 13
get
public DoubleBuffer get(int index, double[] dst)
Этот метод переносит значения double из этого буфера в указанный массив назначения. Позиция этого буфера не меняется. Вызов этого метода в форме src.get(index, dst) работает точно так же, как вызов:
src.get(index, dst, 0, dst.length)
- Параметры:
-
index— индекс в этом буфере, откуда будет считано первое значение double; должен быть неотрицательным и меньшеlimit() -
dst— массив назначения - Возвращает:
- Этот буфер
- Вызывает исключение:
-
IndexOutOfBoundsException— еслиindexотрицательно, не меньшеlimit()илиlimit() - index < dst.length - С версии:
- 13
put
public DoubleBuffer put(DoubleBuffer src)
Этот метод переносит оставшиеся в указанном исходном буфере значения 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(int index, DoubleBuffer src, int offset, int length)
Этот метод переносит length значений double из указанного исходного буфера в этот буфер, начиная с указанной offset в исходном буфере и указанной index в этом буфере. Позиции обоих буферов не меняются.
Иными словами, вызов этого метода в форме dst.put(index, src, offset, length) имеет точно такой же эффект, как цикл
for (int i = offset, j = index; i < offset + length; i++, j++)
dst.put(j, src.get(i));
- Параметры:
-
index— индекс в этом буфере, по которому будет записано первое значение double; должен быть неотрицательным и меньшеlimit() -
src— буфер, из которого считываются значения double -
offset— индекс в исходном буфере, по которому будет считано первое значение double; должен быть неотрицательным и меньшеsrc.limit() -
length— количество значений double, считываемых из указанного буфера; должно быть неотрицательным и не превышать меньшее из значенийlimit() - indexиsrc.limit() - offset - Возвращает:
- Этот буфер
- Вызывает исключение:
-
IndexOutOfBoundsException— если не выполнены предварительные условия для параметровindex,offsetиlength -
ReadOnlyBufferException— если этот буфер доступен только для чтения - С версии:
- 16
put
public DoubleBuffer put(double[] src, int offset, int length)
Этот метод переносит значения double в этот буфер из указанного исходного массива. Если из массива требуется скопировать больше значений double, чем осталось в этом буфере, то есть если length > remaining(), значения double не переносятся и возникает исключение BufferOverflowException.
В противном случае этот метод копирует length значений double из указанного массива в этот буфер, начиная с указанного смещения в массиве и текущей позиции этого буфера. Затем позиция этого буфера увеличивается на length.
Иными словами, вызов этого метода в форме dst.put(src, off, len) имеет точно такой же эффект, как цикл
for (int i = off; i < off + len; i++)
dst.put(src[i]);
- Параметры:
-
src— массив, из которого считываются значения double -
offset— смещение в массиве, начиная с которого будет считано первое значение double; должно быть неотрицательным и не превышатьsrc.length -
length— количество значений double, считываемых из указанного массива; должно быть неотрицательным и не превышатьsrc.length - offset - Возвращает:
- Этот буфер
- Вызывает исключение:
-
BufferOverflowException— если в этом буфере недостаточно места -
IndexOutOfBoundsException— если не выполнены предварительные условия для параметровoffsetиlength -
ReadOnlyBufferException— если этот буфер доступен только для чтения
put
public final DoubleBuffer put(double[] src)
Этот метод переносит всё содержимое указанного исходного массива double в этот буфер. Вызов этого метода в форме dst.put(a) работает точно так же, как вызов
dst.put(a, 0, a.length)
- Параметры:
-
src— исходный массив - Возвращает:
- Этот буфер
- Вызывает исключение:
-
BufferOverflowException— если в этом буфере недостаточно места -
ReadOnlyBufferException— если этот буфер доступен только для чтения
put
public DoubleBuffer put(int index, double[] src, int offset, int length)
Этот метод переносит length значений double из указанного массива, начиная с указанного смещения в массиве и указанного индекса в этом буфере. Позиция этого буфера не меняется.
Вызов этого метода в форме dst.put(index, src, offset, length) имеет точно такой же эффект, как следующий цикл, за исключением того, что сначала проверяется согласованность переданных параметров; кроме того, этот метод потенциально намного эффективнее:
for (int i = offset, j = index; i < offset + length; i++, j++)
dst.put(j, src[i]);
- Параметры:
-
index— индекс в этом буфере, по которому будет записано первое значение double; должен быть неотрицательным и меньшеlimit() -
src— массив, из которого считываются значения double -
offset— смещение в массиве, начиная с которого будет считано первое значение double; должно быть неотрицательным и меньшеsrc.length -
length— количество значений double, считываемых из указанного массива; должно быть неотрицательным и не превышать меньшее из значенийlimit() - indexиsrc.length - offset - Возвращает:
- Этот буфер
- Вызывает исключение:
-
IndexOutOfBoundsException— если не выполнены предварительные условия для параметровindex,offsetиlength -
ReadOnlyBufferException— если этот буфер доступен только для чтения - С версии:
- 13
put
public DoubleBuffer put(int index, double[] src)
Этот метод копирует значения double в этот буфер из указанного исходного массива. Позиция этого буфера не меняется. Вызов этого метода в форме dst.put(index, src) работает точно так же, как вызов:
dst.put(index, src, 0, src.length);
- Параметры:
-
index— индекс в этом буфере, по которому будет записано первое значение double; должен быть неотрицательным и меньшеlimit() -
src— массив, из которого считываются значения double - Возвращает:
- Этот буфер
- Вызывает исключение:
-
IndexOutOfBoundsException— еслиindexотрицательно, не меньшеlimit()илиlimit() - index < src.length -
ReadOnlyBufferException— если этот буфер доступен только для чтения - С версии:
- 13
hasArray
public final boolean hasArray()
Если этот метод возвращает true, методы array и arrayOffset можно безопасно вызывать.
array
public final double[] array()
Изменения содержимого этого буфера приводят к изменению содержимого возвращённого массива, и наоборот.
Перед вызовом этого метода вызовите метод hasArray, чтобы убедиться, что у этого буфера есть доступный массив-хранилище.
- Определено в:
-
arrayв классеBuffer - Возвращает:
- Массив, используемый этим буфером в качестве хранилища
- Вызывает исключение:
-
ReadOnlyBufferException— если этот буфер использует массив в качестве хранилища, но доступен только для чтения -
UnsupportedOperationException— если этот буфер не использует доступный массив в качестве хранилища
arrayOffset
public final int arrayOffset()
Если этот буфер использует массив в качестве хранилища, позиции буфера p соответствует индекс массива p + arrayOffset().
Перед вызовом этого метода вызовите метод hasArray, чтобы убедиться, что у этого буфера есть доступный массив-хранилище.
- Определено в:
-
arrayOffsetв классеBuffer - Возвращает:
- Смещение первого элемента буфера в массиве этого буфера
- Вызывает исключение:
-
ReadOnlyBufferException— если этот буфер использует массив в качестве хранилища, но доступен только для чтения -
UnsupportedOperationException— если этот буфер не использует доступный массив в качестве хранилища
position
public final DoubleBuffer position(int newPosition)
limit
public final DoubleBuffer limit(int newLimit)
mark
reset
clear
public final DoubleBuffer clear()
Вызовите этот метод перед заполнением буфера последовательностью операций чтения из канала или операций put. Например:
buf.clear(); // Prepare buffer for reading
in.read(buf); // Read data
Этот метод фактически не стирает данные в буфере, но называется так, будто стирает, поскольку чаще всего применяется в ситуациях, когда это не имеет значения.
flip
public final DoubleBuffer flip()
После последовательности операций чтения из канала или операций put вызовите этот метод, чтобы подготовиться к последовательности операций записи в канал или относительных операций get. Например:
buf.put(magic); // Prepend header
in.read(buf); // Read data into rest of buffer
buf.flip(); // Flip buffer
out.write(buf); // Write header + data to channel
Этот метод часто используется совместно с методом compact при передаче данных из одного места в другое.
rewind
public final DoubleBuffer rewind()
Вызовите этот метод перед последовательностью операций записи в канал или операций get, предполагая, что предел уже установлен надлежащим образом. Например:
out.write(buf); // Write remaining data
buf.rewind(); // Rewind buffer
buf.get(array); // Copy data into array
compact
public abstract DoubleBuffer compact()
Значения типа double, находящиеся между текущей позицией буфера и его пределом, если таковые имеются, копируются в начало буфера. То есть значение типа double по индексу p = position() копируется по индексу ноль, значение типа double по индексу p + 1 копируется по индексу один и так далее, пока значение типа double по индексу limit() - 1 не будет скопировано по индексу n = limit() - 1 - p. Затем позиция буфера устанавливается в n+1, а его предел — в значение его емкости. Метка, если она задана, сбрасывается.
Позиция буфера устанавливается в значение, равное количеству скопированных значений типа double, а не в ноль, чтобы сразу после вызова этого метода можно было вызвать другой относительный метод put.
- Возвращает:
- Этот буфер
- Выбрасывает:
-
ReadOnlyBufferException- если этот буфер доступен только для чтения
isDirect
toString
hashCode
public int hashCode()
Хеш-код буфера double зависит только от оставшихся элементов, то есть от элементов начиная с position() и заканчивая элементом по индексу limit() - 1 включительно.
Поскольку хеш-коды буферов зависят от их содержимого, не рекомендуется использовать буферы в качестве ключей в хеш-таблицах или подобных структурах данных, если только не известно, что их содержимое не будет изменяться.
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 не равен объектам других типов.
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- объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше заданного буфера
mismatch
public int mismatch(DoubleBuffer that)
position каждого буфера и находится в диапазоне от 0 (включительно) до меньшего из количеств элементов remaining в каждом буфере (не включительно). Если у двух буферов есть общий префикс, возвращаемый индекс равен длине общего префикса; следовательно, по этому индексу в соответствующих буферах имеется несовпадение. Если один буфер является собственным префиксом другого, возвращаемый индекс равен меньшему из количеств оставшихся элементов в каждом буфере; следовательно, этот индекс действителен только для буфера с большим количеством оставшихся элементов. В противном случае несовпадений нет.
- Параметры:
-
that- буфер byte, который проверяется на несовпадение с этим буфером - Возвращает:
- Относительный индекс первого несовпадения между этим и заданным буферами; если несовпадений нет, возвращает -1.
- Начиная с версии:
- 11
order
public abstract ByteOrder order()
Порядок байтов буфера double, созданного путем выделения памяти или оборачивания существующего массива double, соответствует native order базового оборудования. Порядок байтов буфера double, созданного как представление буфера byte, совпадает с порядком байтов буфера byte на момент создания представления.
- Возвращает:
- Порядок байтов этого буфера
© 1993, 2025, 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.