DataBufferWindow

อินเทอร์เฟซสาธารณะ DataBufferWindow
คลาสย่อยทางอ้อมที่รู้จัก

คอนเทนเนอร์ที่ไม่แน่นอนสำหรับการดูส่วนหนึ่งของ 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 หากไม่สามารถเลื่อนหน้าต่างได้เนื่องจากเกินขีดจำกัดบัฟเฟอร์เดิม