DataBufferWindow

общедоступный интерфейс DataBufferWindow
Известные косвенные подклассы

Изменяемый контейнер для просмотра части 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 в исходном буфере.

Параметры
индекс новое смещение для этого окна
Возврат
  • этот экземпляр
Броски
Индексаутофбаундсисключение если окно нельзя сдвинуть, поскольку оно выходит за пределы исходного буфера