Класс LongBuffer
- java.lang.Object
-
- java.nio.Buffer
-
- java.nio.LongBuffer
- Все реализованные интерфейсы:
Comparable<LongBuffer>
public abstract class LongBuffer extends Buffer implements Comparable<LongBuffer>
Буфер для хранения значений типа long.
Этот класс определяет четыре категории операций с буферами long:
Абсолютные и относительные методы
getиputдля чтения и записи отдельных значений типа long;Относительные методы
bulk getдля копирования последовательностей значений типа long из этого буфера в массив;Относительные методы
bulk putдля копирования последовательностей значений типа long из массива long или другого буфера типа long в этот буфер;Метод для
compactingбуфера long.
Буферы long можно создать, используя allocation, выделяя память для содержимого буфера, или wrapping существующий массив long, или создав вид существующего буфера типа byte.
Как и буфер типа byte, буфер типа long может быть прямым или непрямым. Буфер long, созданный с помощью методов этого класса, будет непрямым. Буфер long, созданный как вид буфера типа byte, будет прямым, только если сам буфер типа byte является прямым. Прямой ли буфер long, можно определить, вызвав метод isDirect.
Методы в этом классе, которые не возвращают значения, возвращают буфер, на котором они вызваны. Это позволяет цепочку вызовов методов.
- С тех пор:
- 1.4
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static LongBuffer | allocate(int capacity) | Выделяет новый буфер long. |
long[] | array() | Возвращает массив long, лежащий в основе этого буфера (необязательная операция). |
int | arrayOffset() | Возвращает смещение в массиве, лежащем в основе этого буфера, первого элемента буфера (необязательная операция). |
abstract LongBuffer | asReadOnlyBuffer() | Создаёт новый, только для чтения буфер long, который разделяет содержимое этого буфера. |
abstract LongBuffer | compact() | Уплотняет этот буфер (необязательная операция). |
int | compareTo(LongBuffer that) | Сравнивает этот буфер с другим. |
abstract LongBuffer | duplicate() | Создаёт новый буфер long, который разделяет содержимое этого буфера. |
boolean | equals(Object ob) | Определяет, равен ли этот буфер другому объекту. |
abstract long | get() | Относительный метод get. |
abstract long | get(int index) | Абсолютный метод get. |
LongBuffer | get(long[] dst) | Относительный метод get для блоков данных. |
LongBuffer | get(long[] dst,
int offset,
int length) | Относительный метод get для блоков данных. |
boolean | hasArray() | Определяет, поддерживает ли этот буфер доступный массив long. |
int | hashCode() | Возвращает текущий хэш-код этого буфера. |
abstract boolean | isDirect() | Определяет, является ли этот буфер long прямым. |
int | mismatch(LongBuffer that) | Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером. |
abstract ByteOrder | order() | Получает порядок байтов этого буфера. |
abstract LongBuffer | put(int index,
long l) | Абсолютный метод put (необязательная операция). |
abstract LongBuffer | put(long l) | Относительный метод put (необязательная операция). |
LongBuffer | put(long[] src) | Относительный метод put для блоков данных (необязательная операция). |
LongBuffer | put(long[] src,
int offset,
int length) | Относительный метод put для блоков данных (необязательная операция). |
LongBuffer | put(LongBuffer src) | Относительный метод put для блоков данных (необязательная операция). |
abstract LongBuffer | slice() | Создаёт новый буфер long, содержимое которого является общим подпоследовательностью содержимого этого буфера. |
String | toString() | Возвращает строку, описывающую состояние этого буфера. |
static LongBuffer | wrap(long[] array) | Оборачивает массив long в буфер. |
static LongBuffer | wrap(long[] array,
int offset,
int length) | Оборачивает массив long в буфер. |
Методы, унаследованные от класса 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 LongBuffer allocate(int capacity)
Выделяет новый буфер длин.
Позиция нового буфера будет равна нулю, его предел — его емкость, метка — неопределена, каждый элемент будет инициализирован нулём, а порядок байтов — native order базового оборудования. Он будет иметь backing array, а его array offset будет равен нулю.
- Параметры:
-
capacity- Емкость нового буфера в длинных целых - Возвращает:
- Новый буфер длинных целых
- Исключения:
-
IllegalArgumentException- Еслиcapacity— отрицательное целое число
wrap
public static LongBuffer wrap(long[] array,
int offset,
int length) Оборачивает массив длин в буфер.
Новый буфер будет поддерживаться заданным массивом длин; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость нового буфера будет array.length, его позиция — offset, предел — offset + length, метка — неопределена, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а array offset — нулём.
- Параметры:
-
array- Массив, который будет поддерживать новый буфер -
offset- Смещение подмассива, который будет использоваться; должно быть неотрицательным и не большеarray.length. Позиция нового буфера будет установлена в это значение. -
length- Длина подмассива, который будет использоваться; должно быть неотрицательным и не большеarray.length - offset. Предел нового буфера будет установлен вoffset + length. - Возвращает:
- Новый буфер длинных целых
- Исключения:
-
IndexOutOfBoundsException- Если условия дляoffsetиlengthпараметров не выполняются
wrap
public static LongBuffer wrap(long[] array)
Оборачивает массив длин в буфер.
Новый буфер будет поддерживаться заданным массивом длин; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость и предел нового буфера будут array.length, его позиция — нулём, метка — неопределена, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а array offset — нулём.
- Параметры:
-
array- Массив, который будет поддерживать этот буфер - Возвращает:
- Новый буфер длинных целых
slice
public abstract LongBuffer slice()
Создаёт новый буфер длин, содержащий совмещённую подпоследовательность содержимого этого буфера.
Содержимое нового буфера начнется с текущей позиции этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; позиции, пределы и метки двух буферов будут независимыми.
Позиция нового буфера будет равна нулю, его емкость и предел будут равны количеству длин, оставшихся в этом буфере, метка — неопределена, а порядок байтов — такой же, как у этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер прямой, и он будет только для чтения тогда и только тогда, когда этот буфер только для чтения.
duplicate
public abstract LongBuffer duplicate()
Создаёт новый буфер длин, совмещающий содержимое этого буфера.
Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; позиции, пределы и метки двух буферов будут независимыми.
Емкость, предел, позиция, метки и порядок байтов нового буфера будут идентичны этому буферу. Новый буфер будет прямым тогда и только тогда, когда этот буфер прямой, и он будет только для чтения тогда и только тогда, когда этот буфер только для чтения.
asReadOnlyBuffer
public abstract LongBuffer asReadOnlyBuffer()
Создаёт новый, только для чтения буфер длин, совмещающий содержимое этого буфера.
Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере; однако сам новый буфер будет только для чтения и не позволит изменять общее содержимое. Позиции, пределы и метки двух буферов будут независимыми.
Емкость, предел, позиция, метки и порядок байтов нового буфера будут идентичны этому буферу.
Если этот буфер сам по себе только для чтения, этот метод ведет себя точно так же, как метод duplicate.
- Возвращает:
- Новый буфер длинных целых, только для чтения
get
public abstract long get()
Относительный метод get. Считывает длинное целое в текущей позиции буфера и затем увеличивает позицию.
- Возвращает:
- Длинное целое в текущей позиции буфера
- Исключения:
-
BufferUnderflowException- Если текущая позиция буфера не меньше его предела
put
public abstract LongBuffer put(long l)
Относительный метод put (необязательная операция).
Записывает заданное длинное целое в этот буфер по текущей позиции и затем увеличивает позицию.
- Параметры:
-
l- Длинное целое, которое нужно записать - Возвращает:
- Этот буфер
- Исключения:
-
BufferOverflowException- Если текущая позиция этого буфера не меньше его предела -
ReadOnlyBufferException- Если этот буфер только для чтения
get
public abstract long get(int index)
Абсолютный метод get. Считывает длинное целое по заданному индексу.
- Параметры:
-
index- Индекс, с которого будет считываться длинное целое - Возвращает:
- Длинное целое по заданному индексу
- Исключения:
-
IndexOutOfBoundsException- Еслиindexотрицательное или не меньше предела буфера
put
public abstract LongBuffer put(int index,
long l) Абсолютный метод put (необязательная операция).
Записывает заданное длинное целое в этот буфер по заданному индексу.
- Параметры:
-
index- Индекс, в который будет записано длинное целое -
l- Значение длинного целого, которое будет записано - Возвращает:
- Этот буфер
- Исключения:
-
IndexOutOfBoundsException- Еслиindexотрицательное или не меньше предела буфера -
ReadOnlyBufferException- Если этот буфер только для чтения
get
public LongBuffer get(long[] dst,
int offset,
int length) Относительный метод get для нескольких элементов.
Этот метод передает длинные целые из этого буфера в заданный массив-приемник. Если в буфере остаётся меньше длинных целых, чем требуется для выполнения запроса, то есть, если 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 LongBuffer get(long[] dst)
Относительный метод get для нескольких элементов.
Этот метод передает длинные целые из этого буфера в заданный массив-приемник. Вызов этого метода в формате src.get(a) ведет себя точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst- Массив-приемник - Возвращает:
- Этот буфер
- Исключения:
-
BufferUnderflowException- Если в этом буфере меньше, чемlengthдлинных целых
put
public LongBuffer put(LongBuffer src)
Относительный метод put для нескольких элементов (необязательная операция).
Этот метод передает оставшиеся длинные целые из заданного буфера-источника в этот буфер. Если в буфере-источнике остаётся больше длинных целых, чем в этом буфере, то есть, если src.remaining() > remaining(), то длинные целые не передаются, и выбрасывается исключение BufferOverflowException.
В противном случае этот метод копирует n = src.remaining() длинных целых из заданного буфера в этот буфер, начиная с текущей позиции каждого буфера. Позиции обоих буферов затем увеличиваются на n.
Другими словами, вызов этого метода в формате dst.put(src) имеет точно такой же эффект, как цикл
while (src.hasRemaining())
dst.put(src.get()); за исключением того, что он сначала проверяет наличие достаточного места в этом буфере и потенциально намного эффективнее.- Параметры:
-
src- Буфер-источник, из которого будут считываться длинные целые; не должен быть этим буфером - Возвращает:
- Этот буфер
- Исключения:
-
BufferOverflowException- Если в этом буфере недостаточно места для оставшихся длинных целых в буфере-источнике -
IllegalArgumentException- Если буфер-источник — этот буфер -
ReadOnlyBufferException- Если этот буфер только для чтения
put
public LongBuffer put(long[] src,
int offset,
int length) Метод put для массива long (необязательная операция).
Этот метод копирует значения типа long из заданного исходного массива в этот буфер. Если из массива нужно скопировать больше значений long, чем остается места в этом буфере, то есть, если length > remaining(), то значения long не копируются, и выбрасывается исключение BufferOverflowException.
В противном случае, этот метод копирует length значений long из заданного массива, начиная с заданного смещения в массиве и текущей позиции этого буфера. Позиция этого буфера затем увеличивается на length.
Другими словами, вызов этого метода в форме dst.put(src, off, len) имеет точно такой же эффект, как цикл
for (int i = off; i < off + len; i++)
dst.put(a[i]); за исключением того, что он сначала проверяет, достаточно ли места в этом буфере, и потенциально может быть намного эффективнее.- Параметры:
-
src- Массив, из которого считываются значения long -
offset- Смещение в массиве первого значения long для считывания; должно быть неотрицательным и не большеarray.length -
length- Количество значений long для считывания из заданного массива; должно быть неотрицательным и не большеarray.length - offset - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException- Если в этом буфере недостаточно места -
IndexOutOfBoundsException- Если условия на параметрыoffsetиlengthне выполняются -
ReadOnlyBufferException- Если этот буфер только для чтения
put
public final LongBuffer put(long[] src)
Метод put для массива long (необязательная операция).
Этот метод копирует все содержимое заданного исходного массива long в этот буфер. Вызов этого метода в форме dst.put(a) ведет себя точно так же, как вызов
dst.put(a, 0, a.length)
- Параметры:
-
src- Исходный массив - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException- Если в этом буфере недостаточно места -
ReadOnlyBufferException- Если этот буфер только для чтения
hasArray
public final boolean hasArray()
Указывает, поддерживается ли этот буфер массивом long.
Если этот метод возвращает true, то методы array и arrayOffset могут быть безопасно вызваны.
- Определено в:
-
hasArrayв классеBuffer - Возвращает:
-
trueесли и только если этот буфер поддерживается массивом и не является только для чтения
array
public final long[] array()
Возвращает массив long, который поддерживает этот буфер (необязательная операция).
Изменения в содержимом этого буфера приведут к изменению содержимого возвращаемого массива, и наоборот.
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный поддерживающий массив.
- Определено в:
-
arrayв классеBuffer - Возвращает:
- Массив, поддерживающий этот буфер
- Исключение:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
arrayOffset
public final int arrayOffset()
Возвращает смещение в поддерживающем массиве этого буфера первого элемента буфера (необязательная операция).
Если этот буфер поддерживается массивом, то позиция буфера p соответствует индексу массива p + arrayOffset().
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный поддерживающий массив.
- Определено в:
-
arrayOffsetв классеBuffer - Возвращает:
- Смещение в массиве этого буфера первого элемента буфера
- Исключение:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
compact
public abstract LongBuffer compact()
Уплотняет этот буфер (необязательная операция).
Значения long между текущей позицией буфера и его пределом (если есть) копируются в начало буфера. То есть, значение long с индексом p = position() копируется в индекс ноль, значение long с индексом p + 1 копируется в индекс один, и так далее, пока значение long с индексом limit() - 1 копируется в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается на n+1, а его предел - на его емкость. Отметка, если она определена, отбрасывается.
Позиция буфера устанавливается на количество скопированных значений long, а не на ноль, чтобы вызов этого метода мог быть немедленно последован вызовом другого метода относительного put.
- Возвращает:
- Этот буфер
- Исключение:
-
ReadOnlyBufferException- Если этот буфер только для чтения
isDirect
public abstract boolean isDirect()
Указывает, является ли этот буфер long прямым.
- Определено в:
-
isDirectв классеBuffer - Возвращает:
-
trueесли и только если этот буфер является прямым
toString
public String toString()
Возвращает строку, обобщающую состояние этого буфера.
hashCode
public int hashCode()
Возвращает текущий хэш-код этого буфера.
Хэш-код буфера long зависит только от оставшихся элементов; то есть, от элементов от position() до включительно элемента с индексом limit() - 1.
Поскольку хэш-коды буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в хэш-картах или подобных структурах данных, если не известно, что их содержимое не изменится.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Текущий хэш-код этого буфера
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
equals
public boolean equals(Object ob)
Определяет, равен ли этот буфер другому объекту.
Два буфера long равны тогда и только тогда, когда
Они имеют тот же тип элементов,
У них одинаковое количество оставшихся элементов, и
Две последовательности оставшихся элементов, рассматриваемые независимо от своих начальных позиций, точечно равны.
Буфер long не равен ни одному другому типу объектов.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
ob- Объект, с которым сравнивается этот буфер - Возвращает:
-
trueесли и только если этот буфер равен заданному объекту - См. также:
-
Object.hashCode(),HashMap
compareTo
public int compareTo(LongBuffer that)
Сравнивает этот буфер с другим.
Два буфера long сравниваются путем сравнения их последовательностей оставшихся элементов лексикографически, не обращая внимания на стартовую позицию каждой последовательности в соответствующем буфере. Пары элементов long сравниваются, как если бы был вызван Long.compare(long,long).
Буфер long не может быть сравним с любым другим типом объекта.
- Определено в:
-
compareToв интерфейсеComparable<LongBuffer> - Параметры:
-
that- объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, так как этот буфер меньше, равен или больше, чем заданный буфер
mismatch
public int mismatch(LongBuffer that)
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером. Индекс относителен к position каждого буфера и будет в диапазоне от 0 (включительно) до меньшего из remaining элементов в каждом буфере (исключительно).
Если два буфера имеют общую префиксную часть, то возвращаемый индекс равен длине общей префиксной части, и из этого следует, что несовпадение между двумя буферами находится в этом индексе в соответствующих буферах. Если один буфер является правильным префиксом другого, то возвращаемый индекс равен наименьшему из оставшихся элементов в каждом буфере, и из этого следует, что индекс действителен только для буфера с большим количеством оставшихся элементов. В противном случае несовпадений нет.
- Параметры:
-
that- Буфер типа byte, проверяемый на несовпадение с этим буфером - Возвращает:
- Относительный индекс первого несовпадения между этим и заданным буфером, в противном случае -1, если несовпадений нет.
- С:
- 11
order
public abstract ByteOrder order()
Возвращает порядок байтов этого буфера.
Порядок байтов буфера long, созданного путем выделения или обертывания существующего массива long, является порядком native order базового оборудования. Порядок байтов буфера long, созданного как вид буфера byte, такой же, как у буфера byte в момент создания вида.
- Возвращает:
- Порядок байтов этого буфера
© 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/LongBuffer.html