DataBufferWindow

パブリック インターフェイスDataBufferWindow
既知の間接サブクラス

DataBufferの一部を表示するための変更可能なコンテナー。

データ バッファ ウィンドウは固定サイズで、 offset(long)のように新しいバッファ インスタンスを割り当てることなく、バッファに沿って"slide"データのさまざまなビューを提供できます。これにより、この操作が頻繁に繰り返される場合の全体的なパフォーマンスが向上します。例えば:

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
バッファ()
このウィンドウをバックアップするバッファを返します。
抽象的な長い
オフセット()
元のバッファ内のこのウィンドウの現在のオフセットを返します。
抽象的な長い
サイズ()
このバッファウィンドウのサイズを返します。
抽象データバッファウィンドウ<B>
スライド(ロングステップ)
元のバッファー内のstep要素のウィンドウを移動します。
抽象データバッファウィンドウ<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元のバッファ制限を超えているためにウィンドウをスライドできない場合

public abstract DataBufferWindow <B> slideTo (ロングインデックス)

元のバッファ内の指定された位置にウィンドウを移動します。

ウィンドウのサイズは同じままで、そのオフセットはindexに設定されるため、インデックスxでのbuffer()の値にアクセスすると、元のバッファのindex + xの値が返されます。

パラメータ
索引このウィンドウの新しいオフセット
返品
  • このインスタンス
投げる
IndexOutOfBoundsException元のバッファ制限を超えているためにウィンドウをスライドできない場合