زیر کلاس های غیر مستقیم شناخته شده AbstractDataBufferWindow <B DataBuffer <?>> را گسترش می دهد |
یک محفظه قابل تغییر برای مشاهده بخشی از یک DataBuffer
.
پنجرههای بافر داده اندازه ثابتی دارند و میتوانند در امتداد یک بافر "slide"
داشته باشند تا نماهای مختلفی از دادهها را بدون تخصیص نمونه بافر جدید، مانند offset(long)
ارائه دهند. هنگامی که این عملیات به طور مکرر تکرار می شود، این عملکرد کلی را بهبود می بخشد. به عنوان مثال:
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;
}
}
نمونه های DataBufferWindow
حالتی هستند و ایمن نیستند.
روش های عمومی
چکیده ب | بافر () بافر پشتیبان این پنجره را برمی گرداند. |
انتزاعی طولانی | افست () افست فعلی این پنجره را در بافر اصلی برمی گرداند. |
انتزاعی طولانی | اندازه () اندازه این پنجره بافر را برمی گرداند. |
چکیده DataBufferWindow <B> | اسلاید (گام بلند) پنجره عناصر step را در بافر اصلی حرکت می دهد. |
چکیده DataBufferWindow <B> | slideTo (فهرست طولانی) پنجره را در موقعیت داده شده در بافر اصلی حرکت می دهد. |
روش های عمومی
بافر انتزاعی عمومی B ()
بافر پشتیبان این پنجره را برمی گرداند.
هر نمونه پنجره ای بافر مخصوص به خود را دارد که نمایی از DataBuffer
اصلی را ارائه می دهد. زمانی که پنجره به سمت افست های مختلف می رود، بافرها جهش پیدا می کنند. به عنوان مثال:
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());
برمی گرداند
- بافر این پنجره
افست طولانی انتزاعی عمومی ()
افست فعلی این پنجره را در بافر اصلی برمی گرداند.
اندازه بلند انتزاعی عمومی ()
اندازه این پنجره بافر را برمی گرداند.
چکیده عمومی DataBufferWindow <B> اسلاید (گام بلند)
پنجره عناصر step
را در بافر اصلی حرکت می دهد.
اندازه پنجره ثابت می ماند و offset آن بر روی offset() + step
تنظیم می شود. اگر step
مثبت باشد، پنجره به جلو می لغزد. اگر منفی باشد، به عقب می لغزد.
پارامترها
گام | مقداری که باید به افست فعلی این پنجره اضافه کنید |
---|
برمی گرداند
- این نمونه
پرتاب می کند
IndexOutOfBoundsException | اگر پنجره نمی تواند لغزنده شود زیرا از محدودیت های بافر اصلی فراتر می رود |
---|
چکیده عمومی DataBufferWindow <B> slideTo (نمایه طولانی)
پنجره را در موقعیت داده شده در بافر اصلی حرکت می دهد.
اندازه پنجره ثابت می ماند و افست آن روی index
تنظیم می شود، به طوری که دسترسی به مقدار buffer()
در شاخص x
مقدار index + x
را در بافر اصلی برمی گرداند.
پارامترها
شاخص | افست جدید برای این پنجره |
---|
برمی گرداند
- این نمونه
پرتاب می کند
IndexOutOfBoundsException | اگر پنجره نمی تواند لغزنده شود زیرا از محدودیت های بافر اصلی فراتر می رود |
---|