モジュール java.base
パッケージ java.nio

クラスDoubleBuffer

  • すべての実装されたインタフェース:
    Comparable<DoubleBuffer>

    public abstract class DoubleBuffer
    extends Buffer
    implements Comparable<DoubleBuffer>
    doubleバッファです。

    このクラスは、doubleバッファに対する操作を4つのカテゴリに分類します。

    • 単一doubleの読み込みと書込みを行う絶対および相対get/putメソッド。

    • 連続したdoubleシーケンスをこのバッファから配列へと転送する相対一括getメソッド。

    • 連続したdoubleシーケンスをdouble配列やその他のdoubleバッファからこのバッファへと転送する相対一括putメソッド。

    • ダブル・バッファのcompactingのメソッド。

    doubleバッファを作成するには、バッファの内容に容量を割り当てる割り当てを実行するか、既存のdouble配列をバッファ内にラップするか、既存のbyteバッファのビューを作成します。

    byteバッファと同様に、doubleバッファにもダイレクト」と「非ダイレクトがあります。 このクラスのwrapメソッドで作成されたdoubleバッファは非ダイレクト・バッファになります。 byteバッファのビューとして作成されたdoubleバッファは、byteバッファがダイレクト・バッファである場合にかぎりダイレクト・バッファになります。 doubleバッファがダイレクト・バッファかどうかは、isDirectメソッドの呼出しによって判断できます。

    このクラスのメソッドのうち戻り値を返さないものは、自身を呼び出したバッファの情報を返します。 これを応用して、メソッド呼出しを連鎖させることができます。

    導入されたバージョン:
    1.4
    • メソッドのサマリー

      すべてのメソッド staticメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      static DoubleBuffer allocate​(int capacity)
      新しいdoubleバッファを割り当てます。
      double[] array()
      このバッファを補助するdouble配列を返します  (オプションの操作)
      int arrayOffset()
      このバッファの補助配列内にある、このバッファの最初の要素のオフセットを返します  (オプションの操作)
      abstract DoubleBuffer asReadOnlyBuffer()
      このバッファの内容を共有する新しい読込み専用doubleバッファを作成します。
      abstract DoubleBuffer compact()
      このバッファを圧縮します  (オプションの操作)
      int compareTo​(DoubleBuffer that)
      このバッファを別のバッファと比較します。
      abstract DoubleBuffer duplicate()
      このバッファの内容を共有する新しいdoubleバッファを作成します。
      boolean equals​(Object ob)
      このバッファが別のオブジェクトと等価であるかどうかを判断します。
      abstract double get()
      相対getメソッドです。
      DoubleBuffer get​(double[] dst)
      相対一括getメソッドです。
      DoubleBuffer get​(double[] dst, int offset, int length)
      相対一括getメソッドです。
      abstract double get​(int index)
      絶対getメソッドです。
      boolean hasArray()
      このバッファがアクセス可能なdouble配列に連動するかどうかを判断します。
      int hashCode()
      このバッファの現在のハッシュ・コードを返します。
      abstract boolean isDirect()
      現在のdoubleバッファがダイレクト・バッファであるかどうかを判断します。
      int mismatch​(DoubleBuffer that)
      このバッファと指定されたバッファの最初の不一致の相対索引を検索して戻します。
      abstract ByteOrder order()
      このバッファのbyte順序を取得します。
      abstract DoubleBuffer put​(double d)
      相対putメソッドです  (オプションの操作)
      DoubleBuffer put​(double[] src)
      相対一括putメソッドです  (オプションの操作)
      DoubleBuffer put​(double[] src, int offset, int length)
      相対一括putメソッドです  (オプションの操作)
      abstract DoubleBuffer put​(int index, double d)
      絶対putメソッドです  (オプションの操作)
      DoubleBuffer put​(DoubleBuffer src)
      相対一括putメソッドです  (オプションの操作)
      abstract DoubleBuffer slice()
      このバッファの内容の共有のサブシーケンスを内容とする新しいdoubleバッファを作成します。
      String toString()
      このバッファの状態を要約した文字列を返します。
      static DoubleBuffer wrap​(double[] array)
      double配列をバッファにラップします。
      static DoubleBuffer wrap​(double[] array, int offset, int length)
      double配列をバッファにラップします。
    • メソッドの詳細

      • allocate

        public static DoubleBuffer allocate​(int capacity)
        新しいdoubleバッファを割り当てます。

        新しいバッファの位置は0になり、その限界はその容量になり、マークは未定義になり、各要素はゼロに初期化され、バイト・オーダーは基礎となるハードウェアのnative orderになります。 補助配列を持ち、配列オフセットはゼロになります。

        パラメータ:
        capacity - 新しいバッファの容量(double)
        戻り値:
        新しいdoubleバッファ
        例外:
        IllegalArgumentException - capacityが負の整数である場合
      • wrap

        public static DoubleBuffer wrap​(double[] array,
                                        int offset,
                                        int length)
        double配列をバッファにラップします。

        新しいバッファは指定されたdouble配列によって補助されます。バッファに変更を加えると配列も変更され、配列に変更を加えるとバッファも変更されます。 新しいバッファの容量はarray.lengthになり、その位置はoffsetになり、その制限はoffset + lengthになり、そのマークは未定義となり、そのバイト順序は基盤となるハードウェアのnative orderになります。 指定された配列が補助配列となり、その配列オフセットはゼロになります。

        パラメータ:
        array - 新しいバッファを補助する配列
        offset -使用するサブ配列のオフセット。array.length以下の負でない値でなければならない。 新しいバッファの位置は、この値に設定される。
        length - 使用するサブ配列の長さ。array.length - offset以下の負でない値でなければならない。 新しいバッファのリミットは、offset+lengthに設定される。
        戻り値:
        新しいdoubleバッファ
        例外:
        IndexOutOfBoundsException - offsetパラメータとlengthパラメータの前提条件が満たされていない場合
      • wrap

        public static DoubleBuffer wrap​(double[] array)
        double配列をバッファにラップします。

        新しいバッファは指定されたdouble配列によって補助されます。バッファに変更を加えると配列も変更され、配列に変更を加えるとバッファも変更されます。 新しいバッファの容量と限界はarray.lengthになり、その位置はゼロになり、マークは未定義になり、そのバイト・オーダーは基盤となるハードウェアのnative orderになります。 指定された配列が補助配列となり、その配列オフセットはゼロになります。

        パラメータ:
        array - このバッファを補助する配列
        戻り値:
        新しいdoubleバッファ
      • slice

        public abstract DoubleBuffer slice()
        このバッファの内容の共有のサブシーケンスを内容とする新しいdoubleバッファを作成します。

        新しいバッファの内容は、このバッファの現在位置から始まります。 このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。新しいバッファの内容に変更を加えると、その内容がこのバッファに反映されます。2つのバッファの位置、リミット、マークの値はそれぞれ異なります。

        新しいバッファの位置は0になり、その容量と制限はこのバッファに残っているdoubleの数になり、そのマークは未定義になり、そのバイト順序はこのバッファのものと同じになります。 新しいバッファは、このバッファがダイレクト・バッファである場合にかぎりダイレクト・バッファになります。また、このバッファが読取り専用バッファである場合にかぎり読取り専用バッファになります。

        定義:
        クラスBufferslice
        戻り値:
        新しいdoubleバッファ
      • duplicate

        public abstract DoubleBuffer duplicate()
        このバッファの内容を共有する新しいdoubleバッファを作成します。

        新しいバッファの内容は、このバッファの内容と同じになります。 このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。新しいバッファの内容に変更を加えると、その内容がこのバッファに反映されます。2つのバッファの位置、リミット、マークの値はそれぞれ異なります。

        新しいバッファ容量、限界、位置、マーク値、およびバイト順は、このバッファのものと同じになります。 新しいバッファは、このバッファがダイレクト・バッファである場合にかぎりダイレクト・バッファになります。また、このバッファが読取り専用バッファである場合にかぎり読取り専用バッファになります。

        定義:
        クラスBufferduplicate
        戻り値:
        新しいdoubleバッファ
      • asReadOnlyBuffer

        public abstract DoubleBuffer asReadOnlyBuffer()
        このバッファの内容を共有する新しい読込み専用doubleバッファを作成します。

        新しいバッファの内容は、このバッファの内容と同じになります。 このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。しかし、新しいバッファ自体は読取り専用であり、その共有内容を変更することはできません。 2つのバッファの位置、リミット、マークの値はそれぞれ異なります。

        新しいバッファ容量、限界、位置、マーク値、およびバイト順は、このバッファのものと同じになります。

        このバッファ自身が読込み専用の場合は、このメソッドはduplicateと同じように動作します。

        戻り値:
        新しい読込み専用doubleバッファ
      • get

        public abstract double get()
        相対getメソッドです。 バッファの現在位置にあるdoubleを読み込み、現在位置を増加します。
        戻り値:
        バッファの現在位置のdouble
        例外:
        BufferUnderflowException - バッファの現在位置がリミット以上である場合
      • put

        public abstract DoubleBuffer put​(double d)
        相対putメソッドです  (オプションの操作)

        このバッファの現在位置に指定されたdoubleを書き込み、現在位置を増加します。

        パラメータ:
        d - 書き込まれるdouble
        戻り値:
        このバッファ
        例外:
        BufferOverflowException - このバッファの現在位置がリミット以上である場合
        ReadOnlyBufferException - このバッファが読込み専用である場合
      • get

        public abstract double get​(int index)
        絶対getメソッドです。 指定されたインデックス位置のdoubleを読み込みます。
        パラメータ:
        index - doubleの読込み位置を示すインデックス
        戻り値:
        指定されたインデックス位置のdouble
        例外:
        IndexOutOfBoundsException - indexが負の数である場合、またはバッファのリミット以上である場合
      • put

        public abstract DoubleBuffer put​(int index,
                                         double d)
        絶対putメソッドです  (オプションの操作)

        このバッファの指定されたインデックス位置に、指定されたdoubleを書き込みます。

        パラメータ:
        index - doubleの書込み先を示すインデックス
        d - 書き込まれるdouble値
        戻り値:
        このバッファ
        例外:
        IndexOutOfBoundsException - indexが負の数である場合、またはバッファのリミット以上である場合
        ReadOnlyBufferException - このバッファが読込み専用である場合
      • get

        public DoubleBuffer get​(double[] dst,
                                int offset,
                                int length)
        相対一括getメソッドです。

        このメソッドは、このバッファから指定された配列へdoubleを転送します。 このバッファ内に残っているdoubleが要求に満たない場合(つまり、length > remaining()である場合)、doubleは一切転送されず、BufferUnderflowExceptionがスローされます。

        それ以外の場合、このメソッドは、length個のdoubleを、このバッファの現在位置から指定された配列の指定されたオフセット位置へコピーします。 そのたびに、このバッファの位置がlengthずつ増加します。

        このメソッドをsrc.get(dst, off, len)の形式で呼び出すと、次のループとまったく同じ結果になります。

        
             for (int i = off; i < off + len; i++)
                 dst[i] = src.get();
         
        ただし、現在のバッファ内に十分な数のdoubleが存在することを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。

        パラメータ:
        dst - doubleの書込み先となる配列
        offset - 最初のdoubleの書込み先となる配列内のオフセット。dst.length以下の負でない値でなければならない
        length - 指定された配列に書き込まれるdoubleの最大数。dst.length - offset以下の負でない値でなければならない
        戻り値:
        このバッファ
        例外:
        BufferUnderflowException - このバッファ内に残っているdouble数がlengthよりも少ない場合
        IndexOutOfBoundsException - offsetパラメータとlengthパラメータの前提条件が満たされていない場合
      • get

        public DoubleBuffer get​(double[] dst)
        相対一括getメソッドです。

        このメソッドは、このバッファから指定された配列へdoubleを転送します。 このメソッドをsrc.get(a)の形式で呼び出すと、次の呼び出しと同じ結果になります。

             src.get(a, 0, a.length) 

        パラメータ:
        dst - コピー先配列
        戻り値:
        このバッファ
        例外:
        BufferUnderflowException - このバッファ内に残っているdouble数がlengthよりも少ない場合
      • put

        public DoubleBuffer put​(DoubleBuffer src)
        相対一括putメソッドです  (オプションの操作)

        このメソッドは、指定されたソース・バッファ内に残っているdoubleをこのバッファへ転送します。 ソース・バッファ内に残っているdoubleがこのバッファ内に残っているdoubleよりも多い場合(つまり、src.remaining() > remaining()である場合)、doubleは一切転送されず、BufferOverflowExceptionがスローされます。

        それ以外の場合、このメソッドは、指定されたバッファの現在位置からこのバッファの現在位置へn = src.remaining()個のdoubleをコピーします。 そのたびに、両方のバッファの位置がnずつ増加します。

        このメソッドをdst.put(src)の形式で呼び出すと、次のループとまったく同じ結果になります。

             while (src.hasRemaining())
                 dst.put(src.get()); 
        ただし、このバッファ内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。 このバッファとソース・バッファが同じバッキング配列またはメモリーを共有している場合、結果は、このバッファに書き込まれる前にソース要素が最初に中間のロケーションにコピーされたかのようになります。

        パラメータ:
        src - doubleの読込み先となるソース・バッファ(このバッファ以外)
        戻り値:
        このバッファ
        例外:
        BufferOverflowException - このバッファに、ソース・バッファの残りのdoubleを格納できるだけの容量がない場合
        IllegalArgumentException - ソース・バッファとしてこのバッファを指定した場合
        ReadOnlyBufferException - このバッファが読込み専用である場合
      • put

        public DoubleBuffer put​(double[] src,
                                int offset,
                                int length)
        相対一括putメソッドです  (オプションの操作)

        このメソッドは、指定されたソース配列からこのバッファへdoubleを転送します。 配列からコピーするdoubleがこのバッファ内に残っているdoubleより多い場合(つまり、length > remaining()である場合)、doubleは一切転送されず、BufferOverflowExceptionがスローされます。

        それ以外の場合、このメソッドは、指定された配列の指定されたオフセット位置からこのバッファの現在位置へlength個のdoubleをコピーします。 そのたびに、このバッファの位置がlengthずつ増加します。

        このメソッドをdst.put(src, off, len)の形式で呼び出すと、次のループとまったく同じ結果になります。

        
             for (int i = off; i < off + len; i++)
                 dst.put(a[i]);
         
        ただし、このバッファ内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。

        パラメータ:
        src - double値の読込み先となる配列
        offset - 最初のdouble値の読込み先となる配列内のオフセット。array.length以下の負でない値にする必要がある
        length - 指定された配列から読み取られるdoubleの数。array.length - offset以下の負でない値でなければならない
        戻り値:
        このバッファ
        例外:
        BufferOverflowException - このバッファ内に残っている容量が不足している場合
        IndexOutOfBoundsException - offsetパラメータとlengthパラメータの前提条件が満たされていない場合
        ReadOnlyBufferException - このバッファが読込み専用である場合
      • put

        public final DoubleBuffer put​(double[] src)
        相対一括putメソッドです  (オプションの操作)

        このメソッドは、ソースとなる指定されたdouble配列の内容全体をこのバッファへ転送します。 このメソッドをdst.put(a)の形式で呼び出すと、次の呼び出しと同じ結果になります。

             dst.put(a, 0, a.length) 

        パラメータ:
        src - 転送元配列
        戻り値:
        このバッファ
        例外:
        BufferOverflowException - このバッファ内に残っている容量が不足している場合
        ReadOnlyBufferException - このバッファが読込み専用である場合
      • hasArray

        public final boolean hasArray()
        このバッファがアクセス可能なdouble配列に連動するかどうかを判断します。

        このメソッドの戻り値がtrueであれば、arrayおよびarrayOffsetメソッドを安全に呼び出すことができます。

        定義:
        hasArray、クラスBuffer
        戻り値:
        このバッファが配列に連動しており、読取り専用でない場合にかぎりtrue
      • array

        public final double[] array()
        このバッファを補助するdouble配列を返します  (オプションの操作)

        このバッファの内容に変更を加えると、返される配列の内容も変更されます。その逆も同様です。

        このメソッドを呼び出す前にhasArrayメソッドを呼び出し、このバッファがアクセス可能な補助配列を持っていることを確認します。

        定義:
        array、クラスBuffer
        戻り値:
        このバッファを補助する配列
        例外:
        ReadOnlyBufferException - このバッファが配列に連動しており、しかも読込み専用である場合
        UnsupportedOperationException - このバッファがアクセス可能な配列を利用しない場合
      • arrayOffset

        public final int arrayOffset()
        このバッファの補助配列内にある、このバッファの最初の要素のオフセットを返します  (オプションの操作)

        このバッファが配列に連動していれば、その位置pが配列のインデックスp + arrayOffset()と一致します。

        このメソッドを呼び出す前にhasArrayメソッドを呼び出し、このバッファがアクセス可能な補助配列を持っていることを確認します。

        定義:
        arrayOffset、クラスBuffer
        戻り値:
        このバッファの配列内にある、このバッファの最初の要素のオフセット
        例外:
        ReadOnlyBufferException - このバッファが配列に連動しており、しかも読込み専用である場合
        UnsupportedOperationException - このバッファがアクセス可能な配列を利用しない場合
      • compact

        public abstract DoubleBuffer compact()
        このバッファを圧縮します  (オプションの操作)

        バッファの現在位置からリミットまでの間にdoubleが存在する場合、これらをバッファの先頭にコピーします。 つまり、インデックス位置p = position()のdoubleがインデックス・ゼロにコピーされ、インデックス位置p + 1のdoubleがインデックス1にコピーされるということです。インデックス位置limit() - 1のdoubleがインデックスn = limit() - 1 - pにコピーされるまで、同様の処理が繰り返されます。 最終的にバッファの位置はn+1に設定され、リミットは容量の値と等しくなります。 マークは破棄されます。

        バッファの位置は、ゼロではなく、コピーされるdoubleの数と等しくなります。したがって、このメソッドを呼び出したあと、すぐに別の相対「put」メソッドを呼び出すことができます。

        戻り値:
        このバッファ
        例外:
        ReadOnlyBufferException - このバッファが読込み専用である場合
      • isDirect

        public abstract boolean isDirect()
        現在のdoubleバッファがダイレクト・バッファであるかどうかを判断します。
        定義:
        isDirect、クラスBuffer
        戻り値:
        このバッファがダイレクト・バッファである場合にかぎりtrue
      • toString

        public String toString()
        このバッファの状態を要約した文字列を返します。
        オーバーライド:
        toString、クラスObject
        戻り値:
        サマリー文字列
      • hashCode

        public int hashCode()
        このバッファの現在のハッシュ・コードを返します。

        doubleバッファのハッシュ・コードは、バッファ内に残っている要素、すなわちposition()からlimit() - 1までの要素のみに依存します。

        バッファのハッシュ・コードは内容依存型です。今後バッファの内容が変更されないことが明らかでないかぎり、バッファをハッシュ・マップその他のデータ構造のキーとして使用することは避けてください。

        オーバーライド:
        hashCode、クラスObject
        戻り値:
        このバッファの現在のハッシュ・コード
        関連項目:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
      • equals

        public boolean equals​(Object ob)
        このバッファが別のオブジェクトと等価であるかどうかを判断します。

        2つのdoubleバッファは、次の場合にかぎり等価です。

        1. 要素の型が同じである

        2. バッファ内に残っている要素数が同じである

        3. バッファ内に残っている要素のシーケンス(開始位置とは無関係)が各点で等しい(pointwise equal) (a == b)||(Double.isNaN(a)&& Double.isNaN(b))の場合、このメソッドでは2つのdouble要素abは等価とみなされます。 Double.equals(Object)とは異なり、値-0.0+0.0は等価とみなされます。

        doubleバッファが、その他の型のオブジェクトと等価になることはありません。

        オーバーライド:
        equals、クラスObject
        パラメータ:
        ob - このバッファと比較するオブジェクト
        戻り値:
        このバッファが指定されたオブジェクトと等価である場合にかぎりtrue
        関連項目:
        Object.hashCode()HashMap
      • compareTo

        public int compareTo​(DoubleBuffer that)
        このバッファを別のバッファと比較します。

        2つのdoubleバッファを比較する際は、バッファ内に残っている要素のシーケンスが辞書順に比較されます。このとき、双方のバッファ内に残っているシーケンスの開始位置は考慮されません。 double要素のペアは、Double.compare(double,double)を呼び出すことによって比較されます。ただし、-0.00.0は等価と見なされます。 このメソッドでは、Double.NaNは自身に等しく、ほかのすべてのdouble値(Double.POSITIVE_INFINITYを含む)よりも大きいとみなされる。

        doubleバッファとその他の型のオブジェクトを比較することはできません。

        定義:
        compareTo、インタフェースComparable<DoubleBuffer>
        パラメータ:
        that - 比較対象のオブジェクト。
        戻り値:
        このバッファが指定されたバッファより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数
      • mismatch

        public int mismatch​(DoubleBuffer that)
        このバッファと指定されたバッファの最初の不一致の相対索引を検索して戻します。 インデックスは各バッファのpositionに相対的であり、各バッファ(inclusive)の範囲が各バッファremainingの範囲内で小さくなる。

        2つのバッファが共通プレフィクスを共有している場合、戻される索引は共通プレフィクスの長さとなり、各バッファ内のその索引の2つのバッファ間に不一致があることに従います。 一方のバッファがもう一方のバッファのプレフィクスである場合、戻された索引は各バッファ内の残りの要素の小さい方になり、残りの要素の数が多いバッファに対してのみ索引が有効になります。 それ以外の場合は、不一致はありません。

        パラメータ:
        that - このバッファと不一致をテストするためのバイト・バッファ
        戻り値:
        このバッファと指定されたバッファの最初の不一致の相対索引です。一致しない場合は -1です。
        導入されたバージョン:
        11
      • order

        public abstract ByteOrder order()
        このバッファのbyte順序を取得します。

        割り当てまたは既存のdouble配列のラップによって作成されたdoubleバッファのbyte順序は、基礎となるハードウェアのネイティブ順序と同じになります。 byteバッファのビューとして作成されたdoubleバッファのbyte順序は、ビューを作成した時点のbyteバッファのbyte順序と同じになります。

        戻り値:
        このバッファのbyte順序