알려진 간접 하위 클래스 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
인스턴스는 상태 저장형이며 스레드로부터 안전하지 않습니다.
공개 방법
추상 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 | 원래 버퍼 제한을 초과하여 창이 미끄러질 수 없는 경우 |
---|