Subkelas Tidak Langsung yang Diketahui AbstrakDataBufferWindow <B memperluas DataBuffer <?>> |
Wadah yang bisa diubah untuk melihat bagian dari DataBuffer
.
Jendela buffer data memiliki ukuran tetap dan dapat "slide"
di sepanjang buffer untuk memberikan tampilan data yang berbeda tanpa mengalokasikan instance buffer baru, seperti yang dilakukan offset(long)
. Hal ini meningkatkan kinerja secara keseluruhan bila operasi ini sering diulang. Misalnya:
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;
}
}
Instance DataBufferWindow
bersifat stateful dan tidak aman untuk thread.
Metode Publik
abstrakB | penyangga () Mengembalikan buffer yang mendukung jendela ini. |
abstrak panjang | mengimbangi () Mengembalikan offset saat ini dari jendela ini di buffer asli. |
abstrak panjang | ukuran () Mengembalikan ukuran jendela buffer ini. |
abstrak DataBufferWindow <B> | meluncur (langkah panjang) Memindahkan jendela elemen step di buffer asli. |
abstrak DataBufferWindow <B> | slideTo (indeks panjang) Memindahkan jendela pada posisi tertentu di buffer asli. |
Metode Publik
buffer B abstrak publik ()
Mengembalikan buffer yang mendukung jendela ini.
Setiap instance jendela memiliki buffernya sendiri yang memberikan tampilan ke DataBuffer
asli. Buffer dimutasi ketika jendela digeser ke offset yang berbeda. Misalnya:
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());
Kembali
- buffer jendela ini
offset panjang abstrak publik ()
Mengembalikan offset saat ini dari jendela ini di buffer asli.
abstrak publik ukuran panjang ()
Mengembalikan ukuran jendela buffer ini.
slide DataBufferWindow <B> abstrak publik (langkah panjang)
Memindahkan jendela elemen step
di buffer asli.
Ukuran jendela tetap sama dan offsetnya diatur ke offset() + step
. Jika step
positif, maka jendela akan bergeser ke depan. Jika negatif, ia akan meluncur mundur.
Parameter
melangkah | nilai untuk ditambahkan ke offset saat ini dari jendela ini |
---|
Kembali
- contoh ini
Melempar
IndexOutOfBoundsException | jika jendela tidak dapat digeser karena melampaui batas buffer aslinya |
---|
abstrak publik DataBufferWindow <B> slideTo (indeks panjang)
Memindahkan jendela pada posisi tertentu di buffer asli.
Ukuran jendela tetap sama dan offsetnya diatur ke index
, sehingga mengakses nilai buffer()
pada indeks x
akan mengembalikan nilai pada index + x
di buffer asli.
Parameter
indeks | offset baru untuk jendela ini |
---|
Kembali
- contoh ini
Melempar
IndexOutOfBoundsException | jika jendela tidak dapat digeser karena melampaui batas buffer aslinya |
---|