DataBufferWindow

antarmuka publik DataBufferWindow
Subkelas Tidak Langsung yang Diketahui

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