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 인스턴스는 상태 저장형이며 스레드로부터 안전하지 않습니다.

공개 방법

추상 B
버퍼 ()
이 창을 뒷받침하는 버퍼를 반환합니다.
추상적인 긴
오프셋 ()
원래 버퍼에서 이 창의 현재 오프셋을 반환합니다.
추상적인 긴
사이즈 ()
이 버퍼 창의 크기를 반환합니다.
추상 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 로 설정되므로 인덱스 x 에서 buffer() 값에 액세스하면 원래 버퍼의 index + x 에 있는 값이 반환됩니다.

매개변수
색인 이 창의 새 오프셋
보고
  • 이 인스턴스
던지기
IndexOutOfBoundsException 원래 버퍼 제한을 초과하여 창이 미끄러질 수 없는 경우