Subclasses indiretas conhecidas AbstractDataBufferWindow <B estende DataBuffer <?>> |
Um contêiner mutável para visualizar parte de um DataBuffer
.
As janelas do 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 faz offset(long)
. Isto 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;
}
}
As instâncias de DataBufferWindow
têm estado e não são seguras para threads.
Métodos Públicos
resumo B | buffer () Retorna o buffer que apoia esta janela. |
abstrato longo | desvio () Retorna o deslocamento atual desta janela no buffer original. |
abstrato longo | tamanho () Retorna o tamanho desta janela de buffer. |
DataBufferWindow abstrato <B> | slide (passo longo) Move a janela dos elementos step no buffer original. |
DataBufferWindow abstrato <B> | slideTo (índice longo) Move a janela na posição especificada no buffer original. |
Métodos Públicos
buffer B abstrato público ()
Retorna o buffer que apoia esta janela.
Cada instância de janela possui seu próprio buffer, fornecendo uma visualização do DataBuffer
original. Os buffers sofrem mutação quando a janela desliza para deslocamentos diferentes. 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 abstrato público ()
Retorna o deslocamento atual desta janela no buffer original.
tamanho longo abstrato público ()
Retorna o tamanho desta janela de buffer.
slide público abstrato DataBufferWindow <B> (passo longo)
Move a janela dos elementos step
no buffer original.
O tamanho da janela permanece o mesmo e seu deslocamento é definido como offset() + step
. Se step
for positivo, a janela deslizará para frente. Se for negativo, deslizará para trás.
Parâmetros
etapa | valor a ser adicionado ao deslocamento atual desta janela |
---|
Devoluções
- esta instância
Lança
IndexOutOfBoundsException | se a janela não puder ser deslizada porque ultrapassa os limites originais do buffer |
---|
público abstrato DataBufferWindow <B> slideTo (índice longo)
Move a janela na posição especificada 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 em 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 puder ser deslizada porque ultrapassa os limites originais do buffer |
---|