DataBufferWindow

interfaz pública DataBufferWindow
Subclases indirectas conocidas

Un contenedor mutable para ver parte de un DataBuffer .

Las ventanas del búfer de datos tienen un tamaño fijo y pueden "slide" a lo largo de un búfer para proporcionar diferentes vistas de los datos sin asignar una nueva instancia del búfer, como lo hace offset(long) . Esto mejora el rendimiento general cuando esta operación se repite con frecuencia. Por ejemplo:

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;
     
 }
 }

Las instancias DataBufferWindow tienen estado y no son seguras para subprocesos.

Métodos públicos

resumen B
buffer ()
Devuelve el búfer que respalda esta ventana.
abstracto largo
compensar ()
Devuelve el desplazamiento actual de esta ventana en el búfer original.
abstracto largo
tamaño ()
Devuelve el tamaño de esta ventana de búfer.
ventana de búfer de datos abstracta <B>
diapositiva (paso largo)
Mueve la ventana de elementos step en el búfer original.
ventana de búfer de datos abstracta <B>
slideTo (índice largo)
Mueve la ventana a la posición dada en el búfer original.

Métodos públicos

buffer B de resumen público ()

Devuelve el búfer que respalda esta ventana.

Cada instancia de ventana tiene su propio búfer que proporciona una vista del DataBuffer original. Los buffers cambian cuando la ventana se desliza a diferentes desplazamientos. Por ejemplo:

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());
 

Devoluciones
  • buffer de esta ventana

desplazamiento largo abstracto público ()

Devuelve el desplazamiento actual de esta ventana en el búfer original.

resumen público de tamaño largo ()

Devuelve el tamaño de esta ventana de búfer.

diapositiva pública abstracta DataBufferWindow <B> (paso largo)

Mueve la ventana de elementos step en el búfer original.

El tamaño de la ventana sigue siendo el mismo y su desplazamiento se establece en offset() + step . Si step es positivo, la ventana se deslizará hacia adelante. Si es negativo, se deslizará hacia atrás.

Parámetros
paso valor para agregar al desplazamiento actual de esta ventana
Devoluciones
  • esta instancia
Lanza
Excepción IndexOutOfBounds si la ventana no se puede deslizar porque va más allá de los límites del búfer original

resumen público DataBufferWindow <B> slideTo (índice largo)

Mueve la ventana a la posición dada en el búfer original.

El tamaño de la ventana sigue siendo el mismo y su desplazamiento se establece en index , de modo que acceder al valor de buffer() en el índice x devolverá el valor en index + x en el búfer original.

Parámetros
índice nuevo desplazamiento para esta ventana
Devoluciones
  • esta instancia
Lanza
Excepción IndexOutOfBounds si la ventana no se puede deslizar porque va más allá de los límites del búfer original