Класс DoubleBuffer
- Все реализованные интерфейсы:
Comparable<DoubleBuffer>
public abstract class DoubleBuffer extends Buffer implements Comparable<DoubleBuffer>
Этот класс определяет четыре категории операций с буферами с двойной точностью:
Абсолютные и относительные методы
getиput, которые считывают и записывают отдельные числа с двойной точностью;Абсолютные и относительные методы
bulk get, которые передают непрерывные последовательности чисел с двойной точностью из этого буфера в массив; иАбсолютные и относительные методы
bulk put, которые передают непрерывные последовательности чисел с двойной точностью из массива чисел с двойной точностью{#if[char]?, строки,} или другого буфера с двойной точностью в этот буфер;{#if[!byte]? и}Метод для
compactingбуфера с двойной точностью.
Буферы с двойной точностью можно создать либо с помощью allocation, который выделяет память для содержимого буфера, либо с помощью wrapping существующего массива чисел с двойной точностью {#if[char]?или строки} в буфер, либо создав представление существующего буфера байтов.
Как и буфер байтов, буфер с двойной точностью может быть прямым или непрямым. Буфер с двойной точностью, созданный с помощью методов wrap этого класса, будет непрямым. Буфер с двойной точностью, созданный как представление буфера байтов, будет прямым, если и только если сам буфер байтов является прямым. Прямой или нет буфер с двойной точностью можно определить, вызвав метод isDirect.
Методы в этом классе, не возвращающие никакого значения, указаны так, что они возвращают буфер, на котором они были вызваны. Это позволяет цепочку вызовов методов.
- С:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static DoubleBuffer |
allocate |
Выделяет новый буфер с двойной точностью. |
final double[] |
array() |
Возвращает массив чисел с двойной точностью, на котором основан этот буфер (необязательная операция). |
final int |
arrayOffset() |
Возвращает смещение в массиве, на котором основан этот буфер, первого элемента буфера (необязательная операция). |
abstract DoubleBuffer |
asReadOnlyBuffer() |
Создает новый, только для чтения буфер с двойной точностью, который использует содержимое этого буфера. |
final DoubleBuffer |
clear() |
Очищает этот буфер. |
abstract DoubleBuffer |
compact() |
Уплотняет этот буфер (необязательная операция). |
int |
compareTo |
Сравнивает этот буфер с другим. |
abstract DoubleBuffer |
duplicate() |
Создает новый буфер с двойной точностью, который использует содержимое этого буфера. |
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() |
Указывает, поддерживается ли этот буфер доступным массивом чисел с двойной точностью. |
int |
hashCode() |
Возвращает текущий хэш-код этого буфера. |
abstract boolean |
isDirect() |
Указывает, является ли этот буфер с двойной точностью прямым. |
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() |
Создает новый буфер с двойной точностью, содержимое которого является общим подпоследовательностью содержимого этого буфера. |
abstract DoubleBuffer |
slice |
Создает новый буфер с двойной точностью, содержимое которого является общим подпоследовательностью содержимого этого буфера. |
String |
toString() |
Возвращает строку, обобщающую состояние этого буфера. |
static DoubleBuffer |
wrap |
Заворачивает массив чисел с двойной точностью в буфер. |
static DoubleBuffer |
wrap |
Заворачивает массив чисел с двойной точностью в буфер. |
Методы, объявленные в классе java.nio.Buffer
capacity, hasRemaining, isReadOnly, limit, position, remaining
Подробное описание методов
allocate
public static DoubleBuffer allocate(int capacity)
Позиция нового буфера будет равна нулю, его предел — ёмкости, отметка — неопределённая, каждый элемент будет инициализирован нулём, а порядок байтов — native order базового оборудования. Он будет иметь backing array, а его array offset будет равен нулю.
- Параметры:
-
capacity- ёмкость нового буфера, в double - Возвращает:
- Новый буфер для double
- Исключения:
-
IllegalArgumentException- Если ёмкость — отрицательное целое число
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в классеBuffer - Возвращает:
- Новый буфер для 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()
Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимы.
Ёмкость, предел, позиция, отметка и порядок байтов нового буфера будут идентичны этому буферу. Новый буфер будет прямым тогда и только тогда, когда этот буфер прямой, и он будет только для чтения тогда и только тогда, когда этот буфер только для чтения.
- Определено в:
-
duplicateв классеBuffer - Возвращает:
- Новый буфер для double
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();
за исключением того, что он сначала проверяет, достаточно ли double в этом буфере, и потенциально намного эффективнее.- Параметры:
-
dst- Массив, в который будут записаны double -
offset- Смещение в массиве первого double для записи; должно быть неотрицательным и не превышатьdst.length -
length- Максимальное количество double, которое будет записано в заданный массив; должно быть неотрицательным и не превышатьdst.length - offset - Возвращает:
- Этот буфер
- Исключения:
-
BufferUnderflowException- Если в этом буфере меньшеlengthdouble -
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);
- Parameters:
-
index- Индекс в этом буфере, с которого начнется запись значений типа double; должен быть неотрицательным и меньшеlimit() -
src- Массив, из которого необходимо считать значения типа double - Returns:
- Этот буфер
- Throws:
-
IndexOutOfBoundsException- Еслиindexотрицательный, не меньшеlimit(), илиlimit() - index < src.length -
ReadOnlyBufferException- Если этот буфер только для чтения - Since:
- 13
hasArray
public final boolean hasArray()
Если этот метод возвращает true , то методы array и arrayOffset могут быть безопасно вызваны.
- Specified by:
-
hasArrayв классеBuffer - Returns:
-
trueесли и только если этот буфер поддерживается массивом и не является только для чтения
array
public final double[] array()
Изменения в содержимом этого буфера приведут к изменению содержимого возвращаемого массива, и наоборот.
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный массив.
- Specified by:
-
arrayв классеBuffer - Returns:
- Массив, который поддерживает этот буфер
- Throws:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
arrayOffset
public final int arrayOffset()
Если этот буфер поддерживается массивом, то позиция буфера p соответствует индексу массива p + arrayOffset().
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный массив.
- Specified by:
-
arrayOffsetв классеBuffer - Returns:
- Смещение в массиве этого буфера первого элемента буфера
- Throws:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
position
public final DoubleBuffer position(int newPosition)
- Overrides:
-
positionв классеBuffer - Parameters:
-
newPosition- Новое значение позиции; должно быть неотрицательным и не больше текущего предела - Returns:
- Этот буфер
limit
public final DoubleBuffer limit(int newLimit)
- Overrides:
-
limitв классеBuffer - Parameters:
-
newLimit- Новое значение предела; должно быть неотрицательным и не больше ёмкости этого буфера - Returns:
- Этот буфер
mark
public final DoubleBuffer mark()
- Overrides:
-
markв классеBuffer - Returns:
- Этот буфер
reset
public final DoubleBuffer reset()
Вызов этого метода не изменяет и не отбрасывает значение метки.
- Overrides:
-
resetв классеBuffer - Returns:
- Этот буфер
clear
public final DoubleBuffer clear()
Вызовите этот метод перед использованием последовательности операций чтения канала или операций put для заполнения этого буфера. Например:
buf.clear(); // Prepare buffer for reading in.read(buf); // Read data
Этот метод фактически не стирает данные в буфере, но он назван так, как будто бы он это делал, потому что чаще всего он используется в ситуациях, когда это может быть так же.
- Overrides:
-
clearв классеBuffer - Returns:
- Этот буфер
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 при передаче данных из одного места в другое.
- Overrides:
-
flipв классеBuffer - Returns:
- Этот буфер
rewind
public final DoubleBuffer rewind()
Вызовите этот метод перед последовательностью операций записи в канал или операций get, предполагая, что предел уже установлен соответствующим образом. Например:
out.write(buf); // Write remaining data buf.rewind(); // Rewind buffer buf.get(array); // Copy data into array
- Overrides:
-
rewindв классеBuffer - Returns:
- Этот буфер
compact
public abstract DoubleBuffer compact()
Значения типа double между текущей позицией буфера и его пределом, если таковые имеются, копируются в начало буфера. То есть, значение double с индексом p = position() копируется в индекс ноль, значение double с индексом p + 1 копируется в индекс один, и так далее, пока значение double с индексом limit() - 1 не будет скопировано в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается в n+1, а его предел - в его ёмкость. Метка, если определена, отбрасывается.
Позиция буфера устанавливается на количество скопированных значений типа double, а не на ноль, чтобы вызов этого метода мог быть сразу после вызова другого метода относительного put.
- Returns:
- Этот буфер
- Throws:
-
ReadOnlyBufferException- Если этот буфер только для чтения
isDirect
public abstract boolean isDirect()
- Specified by:
-
isDirectв классеBuffer - Returns:
-
trueесли и только если этот буфер является буфером прямого доступа
toString
public String toString()
- Overrides:
-
toStringв классеObject - Returns:
- Строка-реферат
hashCode
public int hashCode()
Код хеширования буфера double зависит только от оставшихся элементов; то есть, от элементов с position() до и включая элемент с индексом limit() - 1.
Поскольку коды хеширования буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в хеш-картах или подобных структурах данных, если не известно, что их содержимое не изменится.
- Overrides:
-
hashCodeв классеObject - Returns:
- Текущий код хеширования этого буфера
- See Also:
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-буфер не равен любому другому типу объекта.
- Overrides:
-
equalsв классеObject - Parameters:
-
ob- Объект, с которым должен быть сравнен этот буфер - Returns:
-
trueесли и только если этот буфер равен заданному объекту - See Also:
compareTo
public int compareTo(DoubleBuffer that)
Два буфера double сравниваются путем лексикографического сравнения их последовательностей оставшихся элементов, не обращая внимания на начальную позицию каждой последовательности в соответствующем буфере. Пары элементов double сравниваются так, как будто вызывается Double.compare(double,double), за исключением того, что -0.0 и 0.0 считаются равными. Double.NaN в этом методе считается равным самому себе и больше всех других значений double (включая Double.POSITIVE_INFINITY).
Буфер double не может быть сравнен ни с каким другим типом объекта.
- Specified by:
-
compareToв интерфейсеComparable<DoubleBuffer> - Parameters:
-
that- объект для сравнения. - Returns:
- Отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше ли этот буфер, равен ли он или больше, чем заданный буфер
mismatch
public int mismatch(DoubleBuffer that)
position каждого буфера и будет находиться в диапазоне от 0 (включительно) до меньшего из remaining элементов в каждом буфере (исключительно). Если два буфера имеют общее префиксное совпадение, то возвращаемый индекс равен длине общего префикса, и отсюда следует, что несовпадение между двумя буферами происходит на этом индексе в соответствующих буферах. Если один буфер является правильным префиксом другого, то возвращаемый индекс равен меньшему из оставшихся элементов в каждом буфере, и отсюда следует, что индекс действителен только для буфера с большим количеством оставшихся элементов. В противном случае несовпадений нет.
- Parameters:
-
that- Буфер байтов, который необходимо проверить на несовпадение с этим буфером - Returns:
- Относительный индекс первого несовпадения между этим и заданным буфером, в противном случае -1, если несовпадения нет.
- Since:
- 11
order
public abstract ByteOrder order()
Порядок байтов буфера double, созданного путем выделения или обертывания существующего double массива, является native order базового оборудования. Порядок байтов буфера double, созданного как вид буфера байтов, соответствует порядку байтов буфера байтов в момент создания вида.
- Returns:
- Порядок байтов этого буфера
© 1993, 2021, 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://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/DoubleBuffer.html