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