既知の間接サブクラス AbstractDataBufferWindow <B extends DataBuffer <?>> |
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 | 元のバッファ制限を超えているためにウィンドウをスライドできない場合 |
---|