DataBufferWindow

giao diện công cộng DataBufferWindow
Các lớp con gián tiếp đã biết

Một vùng chứa có thể thay đổi để xem một phần của DataBuffer .

Cửa sổ bộ đệm dữ liệu có kích thước cố định và có thể "slide" dọc theo bộ đệm để cung cấp các chế độ xem dữ liệu khác nhau mà không cần phân bổ phiên bản bộ đệm mới, giống như offset(long) . Điều này cải thiện hiệu suất tổng thể khi thao tác này được lặp lại thường xuyên. Ví dụ:

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

Các phiên bản DataBufferWindow có trạng thái và không an toàn theo luồng.

Phương pháp công khai

trừu tượng B
bộ đệm ()
Trả về bộ đệm sao lưu cửa sổ này.
trừu tượng dài
bù lại ()
Trả về offset hiện tại của cửa sổ này trong bộ đệm ban đầu.
trừu tượng dài
kích cỡ ()
Trả về kích thước của cửa sổ bộ đệm này.
trừu tượng DataBufferWindow <B>
trượt (bước dài)
Di chuyển cửa sổ của các phần tử step trong bộ đệm ban đầu.
trừu tượng DataBufferWindow <B>
slideTo (chỉ mục dài)
Di chuyển cửa sổ tại vị trí đã cho trong bộ đệm ban đầu.

Phương pháp công khai

Bộ đệm B trừu tượng công khai ()

Trả về bộ đệm sao lưu cửa sổ này.

Mỗi phiên bản cửa sổ có bộ đệm riêng cung cấp chế độ xem trên DataBuffer gốc. Bộ đệm bị thay đổi khi cửa sổ trượt sang các độ lệch khác nhau. Ví dụ:

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());
 

Trả lại
  • bộ đệm của cửa sổ này

phần bù dài trừu tượng công khai ()

Trả về offset hiện tại của cửa sổ này trong bộ đệm ban đầu.

kích thước dài trừu tượng công khai ()

Trả về kích thước của cửa sổ bộ đệm này.

slide trừu tượng công khai DataBufferWindow <B> (bước dài)

Di chuyển cửa sổ của các phần tử step trong bộ đệm ban đầu.

Kích thước của cửa sổ vẫn giữ nguyên và phần bù của nó được đặt thành offset() + step . Nếu step là dương thì cửa sổ sẽ trượt về phía trước. Nếu nó âm, nó sẽ trượt về phía sau.

Thông số
bước chân giá trị để thêm vào phần bù hiện tại của cửa sổ này
Trả lại
  • trường hợp này
Ném
IndexOutOfBoundsNgoại lệ nếu cửa sổ không thể trượt được vì nó vượt quá giới hạn bộ đệm ban đầu

tóm tắt công khai DataBufferWindow <B> slideTo (chỉ mục dài)

Di chuyển cửa sổ tại vị trí đã cho trong bộ đệm ban đầu.

Kích thước của cửa sổ vẫn giữ nguyên và phần bù của nó được đặt thành index , do đó việc truy cập giá trị của buffer() tại chỉ mục x sẽ trả về giá trị tại index + x trong bộ đệm ban đầu.

Thông số
chỉ mục phần bù mới cho cửa sổ này
Trả lại
  • trường hợp này
Ném
IndexOutOfBoundsNgoại lệ nếu cửa sổ không thể trượt vì nó vượt quá giới hạn bộ đệm ban đầu