Класс 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.
Методы в этом классе, которые не возвращают явное значение, возвращают буфер, над которым они вызваны. Это позволяет цеплять вызовы методов друг за другом.
Дополнительные операции
Методы, указанные как дополнительные операции, выбрасывают ReadOnlyBufferException при вызове на чётом-только буфере DoubleBuffer. Методы 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 в буфер. |
Методы, объявленные в классе java.nio.Buffer
capacity, hasRemaining, isReadOnly, limit, position, remaining
Подробное описание методов
allocate
public static DoubleBuffer allocate(int capacity)
Позиция нового буфера будет равна нулю, его предел — его емкости, отметка — неопределена, каждый его элемент будет инициализирован нулём, а порядок байтов — native order основного оборудования. Он будет иметь backing array, а его array offset будет равен нулю.
- Параметры:
-
capacity- Емкость нового буфера в числах двойной точности - Возвращает:
- Новый буфер двойной точности
- Исключения:
-
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)
Этот метод переносит числа с плавающей точкой двойной точности из этого буфера в указанный целевой массив. Если в буфере осталось меньше чисел с плавающей точкой двойной точности, чем требуется для удовлетворения запроса, то есть, если length > remaining(), то числа с плавающей точкой двойной точности не переносятся и выбрасывается исключение BufferUnderflowException.
В противном случае этот метод копирует length чисел с плавающей точкой двойной точности из этого буфера в указанный массив, начиная с текущей позиции этого буфера и с указанного смещения в массиве. Затем позиция этого буфера увеличивается на length.
Другими словами, вызов этого метода в форме src.get(dst, off, len) имеет точно такой же эффект, как цикл
for (int i = off; i < off + len; i++)
dst[i] = src.get();
- Параметры:
-
dst- Массив, в который должны быть записаны числа с плавающей точкой двойной точности -
offset- Смещение в массиве первого числа с плавающей точкой двойной точности, которое должно быть записано; должно быть неотрицательным и не больше, чемdst.length -
length- Максимальное количество чисел с плавающей точкой двойной точности, которые должны быть записаны в указанный массив; должно быть неотрицательным и не больше, чемdst.length - offset - Возвращает:
- Этот буфер
- Исключения:
-
BufferUnderflowException- Если в этом буфере осталось меньше, чемlengthчисел с плавающей точкой двойной точности -
IndexOutOfBoundsException- Если предварительные условия для параметровoffsetиlengthне выполняются
get
public DoubleBuffer get(double[] dst)
Этот метод переносит числа с плавающей точкой двойной точности из этого буфера в указанный целевой массив. Вызов этого метода в форме src.get(a) ведёт себя точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst- Целевой массив - Возвращает:
- Этот буфер
- Исключения:
-
BufferUnderflowException- Если в этом буфере осталось меньше, чемlengthчисел с плавающей точкой двойной точности
get
public DoubleBuffer get(int index, double[] dst, int offset, int length)
Этот метод переносит length чисел с плавающей точкой двойной точности из этого буфера в указанный массив, начиная с указанного индекса в этом буфере и с указанного смещения в массиве. Позиция этого буфера не изменяется.
Вызов этого метода в форме src.get(index, dst, offset, length) имеет точно такой же эффект, как следующий цикл, за исключением того, что он сначала проверяет согласованность предоставленных параметров, и он потенциально намного эффективнее:
for (int i = offset, j = index; i < offset + length; i++, j++)
dst[i] = src.get(j);
- Параметры:
-
index- Индекс в этом буфере, с которого будет считано первое число с плавающей точкой двойной точности; должно быть неотрицательным и меньше, чемlimit() -
dst- Целевой массив -
offset- Смещение в массиве первого числа с плавающей точкой двойной точности, которое должно быть записано; должно быть неотрицательным и меньше, чемdst.length -
length- Количество чисел с плавающей точкой двойной точности, которые должны быть записаны в указанный массив; должно быть неотрицательным и не больше, чем меньшее изlimit() - indexиdst.length - offset - Возвращает:
- Этот буфер
- Исключения:
-
IndexOutOfBoundsException- Если предварительные условия для параметровindex,offsetиlengthне выполняются - С версии:
- 13
get
public DoubleBuffer get(int index, double[] dst)
Этот метод переносит числа с плавающей точкой двойной точности из этого буфера в указанный целевой массив. Позиция этого буфера не изменяется. Вызов этого метода в форме src.get(index, dst) ведёт себя точно так же, как вызов:
src.get(index, dst, 0, dst.length)
- Параметры:
-
index- Индекс в этом буфере, с которого будет считано первое число с плавающей точкой двойной точности; должно быть неотрицательным и меньше, чемlimit() -
dst- Целевой массив - Возвращает:
- Этот буфер
- Исключения:
-
IndexOutOfBoundsException- Еслиindexотрицательно, не меньше, чемlimit(), илиlimit() - index < dst.length - С версии:
- 13
put
public DoubleBuffer put(DoubleBuffer src)
Этот метод переносит оставшиеся числа с плавающей точкой двойной точности из указанного исходного буфера в этот буфер. Если в исходном буфере осталось больше чисел с плавающей точкой двойной точности, чем в этом буфере, то есть, если src.remaining() > remaining(), то числа с плавающей точкой двойной точности не переносятся и выбрасывается исключение BufferOverflowException.
В противном случае этот метод копирует n = src.remaining() чисел с плавающей точкой двойной точности из указанного буфера в этот буфер, начиная с текущей позиции каждого буфера. Затем позиции обоих буферов увеличиваются на n.
Другими словами, вызов этого метода в форме dst.put(src) имеет точно такой же эффект, как цикл
while (src.hasRemaining())
dst.put(src.get());
- Параметры:
-
src- Исходный буфер, из которого должны быть считаны числа с плавающей точкой двойной точности; не должен быть этим буфером - Возвращает:
- Этот буфер
- Исключения:
-
BufferOverflowException- Если в этом буфере недостаточно места для оставшихся чисел с плавающей точкой двойной точности в исходном буфере -
IllegalArgumentException- Если исходный буфер - это буфер -
ReadOnlyBufferException- Если этот буфер доступен только для чтения
put
public DoubleBuffer put(int index, DoubleBuffer src, int offset, int length)
Этот метод переносит length чисел с плавающей точкой двойной точности в этот буфер из указанного исходного буфера, начиная с указанного 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- Индекс в этом буфере, в котором будет записано первое число с плавающей точкой двойной точности; должно быть неотрицательным и меньше, чемlimit() -
src- Буфер, из которого должны быть считаны числа с плавающей точкой двойной точности -
offset- Индекс в исходном буфере первого числа с плавающей точкой двойной точности, которое должно быть считано; должно быть неотрицательным и меньше, чемsrc.limit() -
length- Количество чисел с плавающей точкой двойной точности, которые должны быть считаны из указанного буфера; должно быть неотрицательным и не больше, чем меньшее изlimit() - indexиsrc.limit() - offset - Возвращает:
- Этот буфер
- Исключения:
-
IndexOutOfBoundsException- Если предварительные условия для параметровindex,offsetиlengthне выполняются -
ReadOnlyBufferException- Если этот буфер доступен только для чтения - С версии:
- 16
put
public DoubleBuffer put(double[] src, int offset, int length)
Этот метод переносит числа с плавающей точкой двойной точности в этот буфер из указанного исходного массива. Если чисел с плавающей точкой двойной точности, которые нужно скопировать из массива, больше, чем осталось в этом буфере, то есть, если length > remaining(), то числа с плавающей точкой двойной точности не переносятся и выбрасывается исключение BufferOverflowException.
В противном случае этот метод копирует length чисел с плавающей точкой двойной точности из указанного массива в этот буфер, начиная с указанного смещения в массиве и с текущей позиции этого буфера. Затем позиция этого буфера увеличивается на length.
Другими словами, вызов этого метода в форме dst.put(src, off, len) имеет точно такой же эффект, как цикл
for (int i = off; i < off + len; i++)
dst.put(src[i]);
- Параметры:
-
src- Массив, из которого должны быть считаны числа с плавающей точкой двойной точности -
offset- Смещение в массиве первого числа с плавающей точкой двойной точности, которое должно быть считано; должно быть неотрицательным и не больше, чемsrc.length -
length- Количество чисел с плавающей точкой двойной точности, которые должны быть считаны из указанного массива; должно быть неотрицательным и не больше, чем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()
Двойные значения между текущей позицией буфера и его пределом, если таковые имеются, копируются в начало буфера. То есть, двойное значение с индексом p = position() копируется в индекс ноль, двойное значение с индексом p + 1 копируется в индекс один и так далее, пока двойное значение с индексом limit() - 1 не скопируется в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается в n+1, а его предел устанавливается в его емкость. Отметка, если она определена, отбрасывается.
Позиция буфера устанавливается в число скопированных двойных значений, а не в ноль, чтобы вызов этого метода можно было немедленно последовать вызовом другого относительного метода put.
- Возвращает:
- Этот буфер
- Бросает:
-
ReadOnlyBufferException- Если этот буфер является только для чтения
isDirect
toString
hashCode
public int hashCode()
Код хеширования буфера двойных значений зависит только от оставшихся элементов; то есть от элементов с position() до, включая, элемент с limit() - 1.
Поскольку коды хеширования буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в хеш-картах или аналогичных структурах данных, если не известно, что их содержимое не изменится.
equals
public boolean equals(Object ob)
Два буфера двойных значений равны тогда и только тогда, когда
Они имеют одинаковый тип элементов,
Они имеют одинаковое количество оставшихся элементов, и
Две последовательности оставшихся элементов, рассматриваемые независимо от их начальных позиций, точечно равны. Этот метод рассматривает два элемента типа double
aиbкак равные, если(a == b) || (Double.isNaN(a) && Double.isNaN(b)). Значения-0.0и+0.0считаются равными, в отличие отDouble.equals(Object).
Буфер двойных значений не равен ни одному другому типу объекта.
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- Буфер байтов, который проверяется на расхождение с этим буфером - Возвращает:
- Относительный индекс первого расхождения между этим и заданным буфером, в противном случае -1, если расхождения нет.
- С тех пор:
- 11
order
public abstract ByteOrder order()
Порядок байтов буфера double, созданного путем выделения или путем обертывания существующего double массива, является native order базового оборудования. Порядок байтов буфера double, созданного в виде представления буфера байтов, является порядком буфера байтов в момент создания представления.
- Возвращает:
- Порядок байтов этого буфера
© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/DoubleBuffer.html