| 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 |
|---|