| Известные косвенные подклассы 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 в исходном буфере.
Параметры
| индекс | новое смещение для этого окна |
|---|
Возврат
- этот экземпляр
Броски
| Индексаутофбаундсисключение | если окно нельзя сдвинуть, поскольку оно выходит за пределы исходного буфера |
|---|