Класс 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для чтения и записи отдельных int;Относительные методы
bulk getдля передачи непрерывных последовательностей int из этого буфера в массив; иОтносительные методы
bulk putдля передачи непрерывных последовательностей int из массива int или другого буфера int в этот буфер; иМетоды для
compacting,duplicatingиslicingбуфера int.
Буферы int можно создать, используя allocation, который выделяет место для содержимого буфера, wrapping существующий массив int в буфер, или создав представление существующего буфера байт.
Как и буфер байт, буфер int может быть прямым или непрямым. Буфер int, созданный с помощью методов wrap этого класса, будет непрямым. Буфер int, созданный как представление буфера байт, будет прямым только в том случае, если сам буфер байт является прямым. Прямой ли буфер int можно определить, вызвав метод isDirect.
Методы в этом классе, которые не возвращают иного значения, по спецификации возвращают буфер, на котором они вызваны. Это позволяет объединять вызовы методов.
- С момента:
- 1.4
Методы
| Модификатор и тип | Метод и описание |
|---|---|
static IntBuffer |
allocate(int capacity) Выделяет новый буфер int. |
int[] |
array() Возвращает массив int, который поддерживает этот буфер (необязательная операция). |
int |
arrayOffset() Возвращает смещение в массиве, поддерживающем этот буфер, первого элемента буфера (необязательная операция). |
abstract IntBuffer |
asReadOnlyBuffer() Создает новый, только для чтения буфер int, который разделяет содержимое этого буфера. |
abstract IntBuffer |
compact() Уплотняет этот буфер (необязательная операция). |
int |
compareTo(IntBuffer that) Сравнивает этот буфер с другим. |
abstract IntBuffer |
duplicate() Создает новый буфер int, который разделяет содержимое этого буфера. |
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. |
int |
hashCode() Возвращает текущий код хэширования этого буфера. |
abstract boolean |
isDirect() Указывает, является ли этот буфер int прямым. |
abstract ByteOrder |
order() Возвращает порядок байтов этого буфера. |
abstract IntBuffer |
put(int i) Относительный метод put (необязательная операция). |
IntBuffer |
put(int[] src) Относительный метод put для блоков данных (необязательная операция). |
IntBuffer |
put(int[] src,
int offset,
int length) Относительный метод put для блоков данных (необязательная операция). |
IntBuffer |
put(IntBuffer src) Относительный метод put для блоков данных (необязательная операция). |
abstract IntBuffer |
put(int index,
int i) Абсолютный метод put (необязательная операция). |
abstract IntBuffer |
slice() Создает новый буфер int, содержащий общую последовательность из содержимого этого буфера. |
String |
toString() Возвращает строку, обобщающую состояние этого буфера. |
static IntBuffer |
wrap(int[] array) Преобразует массив int в буфер. |
static IntBuffer |
wrap(int[] array,
int offset,
int length) Преобразует массив int в буфер. |
Методы, унаследованные от класса 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.
Позиция нового буфера будет равна нулю, его предел — его емкости, отметка — неопределена, и каждый его элемент будет инициализирован нулём. Он будет иметь backing array, и его array offset будет равен нулю.
- Параметры:
-
capacity- Емкость нового буфера в int - Возвращает:
- Новый буфер int
- Исключение:
-
IllegalArgumentException- Еслиcapacity— отрицательное целое число
wrap
public static IntBuffer wrap(int[] array,
int offset,
int length) Оборачивает массив int в буфер.
Новый буфер будет опираться на предоставленный массив int; другими словами, изменения в буфере приведут к изменениям в массиве и наоборот. Емкость нового буфера будет array.length, его позиция — offset, его предел — offset + length, а отметка — неопределена. Его 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, его позиция — нулём, а отметка — неопределена. Его backing array будет заданным массивом, а его array offset> — нулём.
- Параметры:
-
array- Массив, который будет основой этого буфера - Возвращает:
- Новый буфер int
slice
public abstract IntBuffer slice()
Создаёт новый буфер int, содержимое которого является общим подпоследовательностью содержимого этого буфера.
Содержимое нового буфера начнется с текущей позиции этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; позиции, пределы и отметки двух буферов будут независимыми.
Позиция нового буфера будет равна нулю, его емкость и предел будут равны числу оставшихся целых чисел в этом буфере, а отметка — неопределенной. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения, если и только если этот буфер только для чтения.
- Возвращает:
- Новый буфер int
duplicate
public abstract IntBuffer duplicate()
Создаёт новый буфер int, который разделяет содержимое этого буфера.
Содержимое нового буфера будет таким же, как и этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; позиции, пределы и отметки двух буферов будут независимыми.
Значения емкости, предела, позиции и отметки нового буфера будут идентичны значениям этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения, если и только если этот буфер только для чтения.
- Возвращает:
- Новый буфер int
asReadOnlyBuffer
public abstract IntBuffer asReadOnlyBuffer()
Создаёт новый буфер int только для чтения, который разделяет содержимое этого буфера.
Содержимое нового буфера будет таким же, как и этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере; однако сам новый буфер будет только для чтения и не позволит изменять общее содержимое. Позиции, пределы и отметки двух буферов будут независимыми.
Значения емкости, предела, позиции и отметки нового буфера будут идентичны значениям этого буфера.
Если этот буфер сам по себе только для чтения, то этот метод ведет себя точно так же, как метод duplicate.
- Возвращает:
- Новый буфер int только для чтения
get
public abstract int get()
Метод относительного получения. Читает целое число int в текущей позиции буфера и затем увеличивает позицию.
- Возвращает:
- Целое число int в текущей позиции буфера
- Исключение:
-
BufferUnderflowException- Если текущая позиция буфера не меньше его предела
put
public abstract IntBuffer put(int i)
Метод относительного записи (необязательная операция).
Записывает заданное целое число int в этот буфер в текущей позиции, а затем увеличивает позицию.
- Параметры:
-
i- Целое число int для записи - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException- Если текущая позиция этого буфера не меньше его предела -
ReadOnlyBufferException- Если этот буфер только для чтения
get
public abstract int get(int index)
Метод абсолютного получения. Читает целое число int по заданному индексу.
- Параметры:
-
index- Индекс, из которого будет считано целое число int - Возвращает:
- Целое число int по заданному индексу
- Исключение:
-
IndexOutOfBoundsException- Еслиindexотрицательно или не меньше предела буфера
put
public abstract IntBuffer put(int index,
int i) Метод абсолютной записи (необязательная операция).
Записывает заданное целое число int в этот буфер по заданному индексу.
- Параметры:
-
index- Индекс, в который будет записано целое число int -
i- Значение целого числа int для записи - Возвращает:
- Этот буфер
- Исключение:
-
IndexOutOfBoundsException- Еслиindexотрицательно или не меньше предела буфера -
ReadOnlyBufferException- Если этот буфер только для чтения
get
public IntBuffer get(int[] dst,
int offset,
int length) Метод относительного массового получения.
Этот метод передает целые числа 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- Если оставшихся целых чисел int в этом буфере меньше, чемlength -
IndexOutOfBoundsException- Если предварительные условия для параметровoffsetиlengthне выполнены
get
public IntBuffer get(int[] dst)
Метод относительного массового получения.
Этот метод передает целые числа int из этого буфера в заданный массив назначения. Вызов этого метода в виде src.get(a) ведет себя точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst- Массив назначения - Возвращает:
- Этот буфер
- Исключение:
-
BufferUnderflowException- Если оставшихся целых чисел int в этом буфере меньше, чемlength
put
public IntBuffer put(IntBuffer src)
Метод относительного массового записи (необязательная операция).
Этот метод передает оставшиеся целые числа 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- объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше заданного буфера
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.