Subclases indirectas conocidas AbstractDataBufferWindow <B extiende DataBuffer <? >> |
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 |
---|