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