DataBufferWindow

interfaz pública DataBufferWindow
Subclases indirectas conocidas

Un contenedor mutable para ver parte de un DataBuffer .

Las ventanas de búfer de datos tienen un tamaño fijo y pueden "slide" largo de un búfer para proporcionar diferentes vistas de los datos sin asignar una nueva instancia de búfer, como hace el 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;
     
 }
 }

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

Métodos públicos

resumen B
búfer ()
Devuelve el búfer que respalda esta ventana.
abstracto largo
desplazamiento ()
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.
resumen DataBufferWindow <B>
deslizar (paso largo)
Mueve la ventana de elementos de step en el búfer original.
resumen DataBufferWindow <B>
slideTo (índice largo)
Mueve la ventana a la posición dada en el búfer original.

Métodos públicos

búfer B público abstracto ()

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 búferes se modifican 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
  • el búfer de esta ventana

desplazamiento largo público abstracto ()

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

resumen público tamaño largo ()

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

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

Mueve la ventana de elementos de 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 el 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
IndexOutOfBoundsException 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 permanece igual y su desplazamiento se establece en index , de modo que al acceder al valor de buffer() en el índice x se devolverá el valor en index + x en el búfer original.

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