Subclases indirectas conocidas AbstractDataBufferWindow <B extiende DataBuffer <?>> |
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 | búfer () 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 |
---|