Класс DoubleBuffer
- java.lang.Object
-
- java.nio.Buffer
-
- java.nio.DoubleBuffer
- Все реализуемые интерфейсы:
Comparable<DoubleBuffer>
public abstract class DoubleBuffer extends Buffer implements Comparable<DoubleBuffer>
Буфер для хранения значений типа double.
Этот класс определяет четыре категории операций с буферами double:
Абсолютные и относительные методы
getиput, которые читают и записывают отдельные значения типа double;Относительные методы
bulk get, которые передают последовательные массивы значений double из этого буфера в массив;Относительные методы
bulk put, которые передают последовательные массивы значений double из массива double или другого буфера double в этот буфер;Метод для
compactingбуфера double.
Буферы double могут быть созданы с помощью allocation, который выделяет место для содержимого буфера, с помощью wrapping существующего массива double в буфер, или путем создания представления существующего буфера байтов.
Как и буфер байтов, буфер double может быть прямым или косвенным. Буфер double, созданный с помощью методов класса wrap, будет косвенным. Буфер double, созданный как представление буфера байтов, будет прямым только в том случае, если сам буфер байтов является прямым. Прямой или нет буфер double можно определить, вызвав метод isDirect.
Методы в этом классе, которые не возвращают значение, по умолчанию возвращают буфер, над которым они вызываются. Это позволяет цепочить вызовы методов.
- С:
- 1.4
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static DoubleBuffer | allocate(int capacity) | Выделяет новый буфер double. |
double[] | array() | Возвращает массив double, который является основой этого буфера (необязательная операция). |
int | arrayOffset() | Возвращает смещение в массиве, поддерживающем этот буфер, первого элемента буфера (необязательная операция). |
abstract DoubleBuffer | asReadOnlyBuffer() | Создаёт новый, только для чтения, буфер double, который использует то же содержимое, что и этот буфер. |
abstract DoubleBuffer | compact() | Уплотняет этот буфер (необязательная операция). |
int | compareTo(DoubleBuffer that) | Сравнивает этот буфер с другим. |
abstract DoubleBuffer | duplicate() | Создаёт новый буфер double, который использует то же содержимое, что и этот буфер. |
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() | Указывает, поддерживается ли этот буфер доступным массивом double. |
int | hashCode() | Возвращает текущий хэш-код этого буфера. |
abstract boolean | isDirect() | Указывает, является ли этот буфер double прямым. |
int | mismatch(DoubleBuffer that) | Находит и возвращает относительный индекс первого расхождения между этим буфером и заданным буфером. |
abstract ByteOrder | order() | Возвращает порядок байтов этого буфера. |
abstract DoubleBuffer | put(double d) | Относительный метод put (необязательная операция). |
DoubleBuffer | put(double[] src) | Относительный метод put для большого объёма данных (необязательная операция). |
DoubleBuffer | put(double[] src,
int offset,
int length) | Относительный метод put для большого объёма данных (необязательная операция). |
abstract DoubleBuffer | put(int index,
double d) | Абсолютный метод put (необязательная операция). |
DoubleBuffer | put(DoubleBuffer src) | Относительный метод put для большого объёма данных (необязательная операция). |
abstract DoubleBuffer | slice() | Создаёт новый буфер double, содержащий выбранный подмассив из этого буфера. |
String | toString() | Возвращает строку, описывающую состояние этого буфера. |
static DoubleBuffer | wrap(double[] array) | Преобразует массив double в буфер. |
static DoubleBuffer | wrap(double[] array,
int offset,
int length) | Преобразует массив double в буфер. |
Методы, унаследованные от класса 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)
Выделяет новый буфер двойной буферизации.
Позиция нового буфера будет равна нулю, его предел — его емкость, метка — неопределена, каждый элемент будет инициализирован нулем, а порядок байтов — native order базового оборудования. Он будет иметь backing array, и его array offset будет равен нулю.
- Параметры:
-
capacity- Емкость нового буфера в двойных значениях - Возвращает:
- Новый буфер двойных значений
- Выбрасывает:
-
IllegalArgumentException- Еслиcapacityотрицательное целое число
wrap
public static DoubleBuffer wrap(double[] array,
int offset,
int length) Оборачивает массив double в буфер.
Новый буфер будет поддерживаться заданным массивом 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 в буфер.
Новый буфер будет поддерживаться заданным массивом double; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость и предел нового буфера будут array.length, его позиция — нулю, метка — неопределена, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а его array offset — нулю.
- Параметры:
-
array- Массив, который будет поддерживать этот буфер - Возвращает:
- Новый буфер double
slice
public abstract DoubleBuffer slice()
Создает новый буфер double, содержащий общую подпоследовательность содержимого этого буфера.
Содержимое нового буфера будет начинаться с текущей позиции этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и метки двух буферов будут независимыми.
Позиция нового буфера будет равна нулю, его емкость и предел будут равны количеству оставшихся значений double в этом буфере, его метка будет неопределенной, а порядок байтов будет идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения тогда и только тогда, когда этот буфер является только для чтения.
duplicate
public abstract DoubleBuffer duplicate()
Создает новый буфер 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(), то значения не переносятся, и выбрасывается исключение 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- Если осталось меньшеlengthзначений double в этом буфере -
IndexOutOfBoundsException- Если условия дляoffsetиlengthпараметров не соблюдены
get
public DoubleBuffer get(double[] dst)
Относительный метод get для обработки массивов.
Этот метод переносит значения double из этого буфера в заданный массив-приемник. Вызов этого метода в форме src.get(a) ведет себя точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst- Массив назначения - Возвращает:
- Этот буфер
- Выбрасывает:
-
BufferUnderflowException- Если осталось меньшеlengthзначений double в этом буфере
put
public DoubleBuffer put(DoubleBuffer src)
Относительный метод put для обработки массивов (необязательная операция).
Этот метод переносит оставшиеся значения double из заданного буфера-источника в этот буфер. Если оставшихся значений double в буфере-источнике больше, чем в этом буфере, то есть, если src.remaining() > remaining(), то значения не переносятся, и выбрасывается исключение 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, а не в ноль, чтобы вызов этого метода можно было сразу последовать вызовом другого метода блочного копирования put.
- Возвращает:
- Этот буфер
- Исключения:
-
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- сравниваемый объект. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше, чем заданный буфер
mismatch
public int mismatch(DoubleBuffer that)
Находит и возвращает относительный индекс первой несовпадения между этим буфером и заданным буфером. Индекс относится к position каждого буфера и будет в диапазоне от 0 (включительно) до меньшего из remaining элементов в каждом буфере (исключая).
Если два буфера имеют общую префиксную часть, возвращаемый индекс представляет длину общей префиксной части, и это следует из того, что несовпадение между двумя буферами возникает в этом индексе в соответствующих буферах. Если один буфер является правильным префиксом другого, то возвращаемый индекс представляет меньшее из оставшихся элементов в каждом буфере, и это следует из того, что индекс действителен только для буфера с большим количеством оставшихся элементов. В противном случае несовпадения нет.
- Параметры:
-
that- Буфер байтов для проверки на несовпадение с этим буфером - Возвращает:
- Относительный индекс первого несовпадения между этим и заданным буфером, в противном случае -1, если несовпадения нет.
- С тех пор:
- 11
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/DoubleBuffer.html