Subclasses indiretas conhecidas AbstractDataBufferWindow <B extends DataBuffer <? >> |
Um contêiner mutável para visualizar parte de um DataBuffer
.
As janelas de buffer de dados têm um tamanho fixo e podem "slide"
ao longo de um buffer para fornecer diferentes visualizações dos dados sem alocar uma nova instância de buffer, como o offset(long)
faz. Isso melhora o desempenho geral quando esta operação é repetida com frequência. Por exemplo:
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
instâncias de DataBufferWindow
são stateful e não thread-safe.
Métodos Públicos
resumo B | buffer () Retorna o buffer que dá suporte a esta janela. |
abstrato longo | offset () Retorna o deslocamento atual desta janela no buffer original. |
abstrato longo | tamanho () Retorna o tamanho desta janela de buffer. |
abstrato DataBufferWindow <B> | slide (passo longo) Move a janela de elementos da step no buffer original. |
abstrato DataBufferWindow <B> | slideTo (índice longo) Move a janela na posição fornecida no buffer original. |
Métodos Públicos
buffer B de resumo público ()
Retorna o buffer que dá suporte a esta janela.
Cada instância de janela tem seu próprio buffer, fornecendo uma visão do DataBuffer
original. Os buffers são alterados quando a janela desliza para diferentes deslocamentos. Por exemplo:
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());
Devoluções
- buffer desta janela
deslocamento longo do resumo público ()
Retorna o deslocamento atual desta janela no buffer original.
resumo público tamanho longo ()
Retorna o tamanho desta janela de buffer.
slide DataBufferWindow <B> de resumo público (passo longo)
Move a janela de elementos da step
no buffer original.
O tamanho da janela permanece o mesmo e seu deslocamento é definido como offset() + step
. Se o step
for positivo, a janela deslizará para frente. Se for negativo, ele deslizará para trás.
Parâmetros
Passo | valor para adicionar ao deslocamento atual desta janela |
---|
Devoluções
- esta instância
Lança
IndexOutOfBoundsException | se a janela não pode ser deslizada porque ultrapassa os limites originais do buffer |
---|
public abstract DataBufferWindow <B> slideTo (índice longo)
Move a janela na posição fornecida no buffer original.
O tamanho da janela permanece o mesmo e seu deslocamento é definido como index
, de modo que acessar o valor de buffer()
no índice x
retornará o valor no index + x
no buffer original.
Parâmetros
índice | novo deslocamento para esta janela |
---|
Devoluções
- esta instância
Lança
IndexOutOfBoundsException | se a janela não pode ser deslizada porque ultrapassa os limites originais do buffer |
---|