Известные косвенные подклассы AbstractDataBufferWindow <B расширяет DataBuffer <?>> |
Изменяемый контейнер для просмотра части DataBuffer
.
Окна буфера данных имеют фиксированный размер и могут "slide"
по буферу, обеспечивая различные представления данных без выделения нового экземпляра буфера, как это делает offset(long)
. Это повышает общую производительность при частом повторении этой операции. Например:
IntDataBuffer bufferA = DataBuffers.ofInts(1024);
// ... init buffer data
IntDataBuffer bufferB = DataBuffers.ofInts(1, 2, 3, 4);
// Return the index of the first occurrence of bufferB in bufferA using a sliding window
DataBufferWindow<IntDataBuffer> windowA = bufferA.window(4);
for (int i = 0; i < bufferA.size() - bufferB.size(); ++i) {
if (windowA.slideTo(i).buffer().equals(bufferB)) {
return i;
}
}
Экземпляры DataBufferWindow
имеют состояние и не являются потокобезопасными.
Публичные методы
аннотация Б | буфер () Возвращает буфер, поддерживающий это окно. |
абстрактный длинный | компенсировать () Возвращает текущее смещение этого окна в исходном буфере. |
абстрактный длинный | размер () Возвращает размер этого буферного окна. |
абстрактное окно DataBufferWindow <B> | слайд (длинный шаг) Перемещает окно элементов step в исходный буфер. |
абстрактное окно DataBufferWindow <B> | слайдTo (длинный индекс) Перемещает окно в заданную позицию в исходном буфере. |
Публичные методы
общедоступный абстрактный буфер B ()
Возвращает буфер, поддерживающий это окно.
Каждый экземпляр окна имеет собственный буфер, обеспечивающий просмотр исходного DataBuffer
. Буферы изменяются, когда окно перемещается на разные смещения. Например:
IntDataBuffer buffer = DataBuffers.of(0, 1, 2, 3);
DataBufferWindow<IntDataBuffer> window = buffer.window(0, 2);
IntDataBuffer windowBuffer = window.buffer();
assertEquals(0, windowBuffer.getInt(0));
assertEquals(1, windowBuffer.getInt(1));
window.slideTo(2);
assertEquals(2, windowBuffer.getInt(0));
assertEquals(3, windowBuffer.getInt(1));
assertSame(windowBuffer, window.buffer());
Возврат
- буфер этого окна
публичное абстрактное длинное смещение ()
Возвращает текущее смещение этого окна в исходном буфере.
публичный абстрактный длинный размер ()
Возвращает размер этого буферного окна.
общедоступный абстрактный слайд DataBufferWindow <B> (длинный шаг)
Перемещает окно элементов step
в исходный буфер.
Размер окна остается прежним, а его смещение устанавливается на offset() + step
. Если step
положительный, то окно сдвинется вперед. Если он отрицательный, он будет скользить назад.
Параметры
шаг | значение, которое нужно добавить к текущему смещению этого окна |
---|
Возврат
- этот экземпляр
Броски
Индексаутофбаундсисключение | если окно нельзя сдвинуть, поскольку оно выходит за пределы исходного буфера |
---|
общедоступный абстрактный DataBufferWindow <B> слайдTo (длинный индекс)
Перемещает окно в заданную позицию в исходном буфере.
Размер окна остается прежним, а его смещение установлено на index
, так что доступ к значению buffer()
по индексу x
вернет значение по index + x
в исходном буфере.
Параметры
индекс | новое смещение для этого окна |
---|
Возврат
- этот экземпляр
Броски
Индексаутофбаундсисключение | если окно нельзя сдвинуть, поскольку оно выходит за пределы исходного буфера |
---|