DataBufferWindow

interface pública DataBufferWindow
Subclasses indiretas conhecidas

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