DataBufferWindow

interface pública DataBufferWindow
Subclasses indiretas conhecidas

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