| Znane podklasy pośrednie AbstractDataBufferWindow <B rozszerza DataBuffer <?>> |
Zmienny kontener do przeglądania części DataBuffer .
Okna buforów danych mają stały rozmiar i mogą "slide" wzdłuż bufora, aby zapewnić różne widoki danych bez przydzielania nowej instancji bufora, tak jak robi to offset(long) . Poprawia to ogólną wydajność, gdy ta operacja jest często powtarzana. Na przykład:
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;
}
} Instancje DataBufferWindow są stanowe i nie są bezpieczne dla wątków.
Metody publiczne
| streszczenie B | bufor () Zwraca bufor obsługujący to okno. |
| streszczenie długie | zrównoważyć () Zwraca bieżące przesunięcie tego okna w oryginalnym buforze. |
| streszczenie długie | rozmiar () Zwraca rozmiar tego okna bufora. |
| abstrakcyjne okno bufora danych <B> | zjeżdżalnia (długi krok) Przesuwa okno elementów step w oryginalnym buforze. |
| abstrakcyjne okno bufora danych <B> | slideTo (długi indeks) Przesuwa okno w podane miejsce w oryginalnym buforze. |
Metody publiczne
publiczny bufor abstrakcyjny B ()
Zwraca bufor obsługujący to okno.
Każda instancja okna ma swój własny bufor zapewniający widok na oryginalną DataBuffer . Bufory są mutowane, gdy okno przesuwa się do różnych przesunięć. Na przykład:
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());
Powroty
- bufor tego okna
publiczne streszczenie długie przesunięcie ()
Zwraca bieżące przesunięcie tego okna w oryginalnym buforze.
publiczny streszczenie długi rozmiar ()
Zwraca rozmiar tego okna bufora.
publiczny streszczenie DataBufferWindow <B> slajd (długi krok)
Przesuwa okno elementów step w oryginalnym buforze.
Rozmiar okna pozostaje taki sam, a jego przesunięcie jest ustawione na offset() + step . Jeśli step jest dodatni, okno przesunie się do przodu. Jeśli będzie ujemna, będzie się cofać.
Parametry
| krok | wartość, która ma zostać dodana do bieżącego przesunięcia tego okna |
|---|
Powroty
- ten przypadek
Rzuca
| Wyjątek IndexOutOfBounds | jeśli okna nie można przesunąć, ponieważ wykracza poza pierwotne limity bufora |
|---|
publiczne streszczenie DataBufferWindow <B> slideTo (długi indeks)
Przesuwa okno w podane miejsce w oryginalnym buforze.
Rozmiar okna pozostaje taki sam, a jego przesunięcie jest ustawione na index , tak że dostęp do wartości buffer() w indeksie x zwróci wartość w index + x w oryginalnym buforze.
Parametry
| indeks | nowe przesunięcie dla tego okna |
|---|
Powroty
- ten przypadek
Rzuca
| Wyjątek IndexOutOfBounds | jeśli okna nie można przesunąć, ponieważ wykracza poza pierwotne limity bufora |
|---|