| คลาสย่อยทางอ้อมที่รู้จัก 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() + step หาก step เป็นบวก หน้าต่างจะเลื่อนไปข้างหน้า หากเป็นลบก็จะเลื่อนถอยหลัง
พารามิเตอร์
| ขั้นตอน | ค่าที่จะเพิ่มให้กับออฟเซ็ตปัจจุบันของหน้าต่างนี้ |
|---|
การส่งคืน
- อินสแตนซ์นี้
ขว้าง
| IndexOutOfBoundsException | หากไม่สามารถเลื่อนหน้าต่างได้เนื่องจากเกินขีดจำกัดบัฟเฟอร์เดิม |
|---|
สาธารณะบทคัดย่อ DataBufferWindow <B> slideTo (ดัชนียาว)
ย้ายหน้าต่างไปยังตำแหน่งที่กำหนดในบัฟเฟอร์เดิม
ขนาดของหน้าต่างยังคงเท่าเดิมและออฟเซ็ตถูกตั้งค่าเป็น index ดังนั้นการเข้าถึงค่าของ buffer() ที่ดัชนี x จะส่งกลับค่าที่ index + x ในบัฟเฟอร์ดั้งเดิม
พารามิเตอร์
| ดัชนี | ออฟเซ็ตใหม่สำหรับหน้าต่างนี้ |
|---|
การส่งคืน
- อินสแตนซ์นี้
ขว้าง
| IndexOutOfBoundsException | หากไม่สามารถเลื่อนหน้าต่างได้เนื่องจากเกินขีดจำกัดบัฟเฟอร์เดิม |
|---|