public abstract class CharBuffer extends Buffer implements Comparable<CharBuffer>, Appendable, CharSequence, Readable
このクラスは、charバッファに対する操作を4つのカテゴリに分類します。
連続したcharシーケンスをこのバッファから配列へと転送する相対一括get
メソッド。
連続したcharシーケンスをchar配列、文字列またはその他のcharバッファからこのバッファへと転送する相対一括put
メソッド。
charバッファを作成するには、バッファの内容に容量を割り当てる割り当て
を実行するか、既存のchar配列や文字列をバッファ内にラップ
するか、既存のbyteバッファのビューを作成します。
byteバッファと同様に、charバッファにも「ダイレクト」と「非ダイレクト」があります。このクラスのwrapメソッドで作成されたcharバッファは非ダイレクト・バッファになります。byteバッファのビューとして作成されたcharバッファは、byteバッファがダイレクト・バッファである場合にかぎりダイレクト・バッファになります。charバッファがダイレクト・バッファかどうかは、isDirect
メソッドの呼出しによって判断できます。
このクラスはCharSequence
インタフェースを実装しています。このため、charシーケンスが受け付けられる場所であればどこでも、charバッファを使用できます。たとえば、正規表現のパッケージjava.util.regex
での使用が可能です。
このクラスのメソッドのうち戻り値を返さないものは、自身を呼び出したバッファの情報を返します。これを応用して、メソッド呼出しを連鎖させることができます。たとえば、次のような連続した文があるとしましょう。
これらは、次の一文で置き換えられます。cb.put("text/"); cb.put(subtype); cb.put("; charset="); cb.put(enc);
cb.put("text/").put(subtype).put("; charset=").put(enc);
修飾子と型 | メソッドと説明 |
---|---|
static CharBuffer |
allocate(int capacity)
新しいcharバッファを割り当てます。
|
CharBuffer |
append(char c)
指定されたcharをこのバッファに追加します (オプションの操作)。
|
CharBuffer |
append(CharSequence csq)
指定されたcharシーケンスをこのバッファに追加します (オプションの操作)。
|
CharBuffer |
append(CharSequence csq, int start, int end)
指定されたcharシーケンスのサブシーケンスをこのバッファに追加します (オプションの操作)。
|
char[] |
array()
このバッファを補助するchar配列を返します (オプションの操作)。
|
int |
arrayOffset()
このバッファの補助配列内にある、このバッファの最初の要素のオフセットを返します (オプションの操作)。
|
abstract CharBuffer |
asReadOnlyBuffer()
このバッファの内容を共有する新しい読込み専用charバッファを作成します。
|
char |
charAt(int index)
現在位置からの相対位置として指定されたインデックス位置にあるcharを読み込みます。
|
IntStream |
chars()
このシーケンスの
char 値をゼロ拡張したint を含むストリームを返します。 |
abstract CharBuffer |
compact()
このバッファを圧縮します (オプションの操作)。
|
int |
compareTo(CharBuffer that)
このバッファを別のバッファと比較します。
|
abstract CharBuffer |
duplicate()
このバッファの内容を共有する新しいcharバッファを作成します。
|
boolean |
equals(Object ob)
このバッファが別のオブジェクトと等価であるかどうかを判断します。
|
abstract char |
get()
相対getメソッドです。
|
CharBuffer |
get(char[] dst)
相対一括getメソッドです。
|
CharBuffer |
get(char[] dst, int offset, int length)
相対一括getメソッドです。
|
abstract char |
get(int index)
絶対getメソッドです。
|
boolean |
hasArray()
このバッファがアクセス可能なchar配列に連動するかどうかを判断します。
|
int |
hashCode()
このバッファの現在のハッシュ・コードを返します。
|
abstract boolean |
isDirect()
このcharバッファがダイレクト・バッファであるかどうかを判断します。
|
int |
length()
このcharバッファのバッファ長を返します。
|
abstract ByteOrder |
order()
このバッファのbyte順序を取得します。
|
abstract CharBuffer |
put(char c)
相対putメソッドです (オプションの操作)。
|
CharBuffer |
put(char[] src)
相対一括putメソッドです (オプションの操作)。
|
CharBuffer |
put(char[] src, int offset, int length)
相対一括putメソッドです (オプションの操作)。
|
CharBuffer |
put(CharBuffer src)
相対一括putメソッドです (オプションの操作)。
|
abstract CharBuffer |
put(int index, char c)
絶対putメソッドです (オプションの操作)。
|
CharBuffer |
put(String src)
相対一括putメソッドです (オプションの操作)。
|
CharBuffer |
put(String src, int start, int end)
相対一括putメソッドです (オプションの操作)。
|
int |
read(CharBuffer target)
指定されたcharバッファにcharを読み込みます。
|
abstract CharBuffer |
slice()
このバッファの内容の共有のサブシーケンスを内容とする新しいcharバッファを作成します。
|
abstract CharBuffer |
subSequence(int start, int end)
このバッファの指定されたサブシーケンス(現在位置からの相対位置)を表す新しいcharバッファを作成します。
|
String |
toString()
このバッファ内に残っているcharを含む文字列を返します。
|
static CharBuffer |
wrap(char[] array)
char配列をバッファにラップします。
|
static CharBuffer |
wrap(char[] array, int offset, int length)
char配列をバッファにラップします。
|
static CharBuffer |
wrap(CharSequence csq)
charシーケンスをバッファにラップします。
|
static CharBuffer |
wrap(CharSequence csq, int start, int end)
charシーケンスをバッファにラップします。
|
capacity, clear, flip, hasRemaining, isReadOnly, limit, limit, mark, position, position, remaining, reset, rewind
codePoints
public static CharBuffer allocate(int capacity)
capacity
- 新しいバッファの容量(char)IllegalArgumentException
- capacityが負の整数である場合public static CharBuffer wrap(char[] array, int offset, int length)
新しいバッファは指定されたchar配列によって補助されます。バッファに変更を加えると配列も変更され、配列に変更を加えるとバッファも変更されます。新しいバッファの容量はarray.length、位置はoffset、リミットはoffset+lengthになり、マークは定義されません。指定された配列が補助配列
となり、その配列オフセット
はゼロになります。
array
- 新しいバッファを補助する配列offset
-使用するサブ配列のオフセット。array.length以下の負でない値でなければならない。新しいバッファの位置は、この値に設定される。length
- 使用するサブ配列の長さ。array.length - offset以下の負でない値でなければならない。新しいバッファのリミットは、offset+lengthに設定される。IndexOutOfBoundsException
- offsetパラメータとlengthパラメータの前提条件が満たされていない場合public static CharBuffer wrap(char[] array)
新しいバッファは指定されたchar配列によって補助されます。バッファに変更を加えると配列も変更され、配列に変更を加えるとバッファも変更されます。新しいバッファの容量とリミットはarray.length、位置はゼロになり、マークは定義されません。指定された配列が補助配列
となり、その配列オフセット
はゼロになります。
array
- このバッファを補助する配列public int read(CharBuffer target) throws IOException
read
、インタフェース: Readable
target
- charを読み込むバッファIOException
- 入出力エラーが発生した場合NullPointerException
- targetがnullの場合ReadOnlyBufferException
- targetが読取り専用バッファの場合public static CharBuffer wrap(CharSequence csq, int start, int end)
新しい読取り専用バッファの内容は、指定されたcharシーケンスの内容になります。新しいバッファの容量はcsq.length()、位置はstart、リミットはendになり、マークは定義されません。
csq
- 作成される新しいcharバッファの元になるcharシーケンスstart
- 使用される最初のcharを示すインデックス。csq.length()以下の負でない値でなければならない。新しいバッファの位置は、この値に設定される。end
- 使用される最後のcharのあとに続くcharを示すインデックス。start以上、csq.length()以下の値でなければならない。新しいバッファのリミットは、この値に設定される。IndexOutOfBoundsException
- startパラメータとendパラメータの前提条件が満たされていない場合public static CharBuffer wrap(CharSequence csq)
新しい読取り専用バッファの内容は、指定されたcharシーケンスの内容になります。新しいバッファの容量とリミットはcsq.length()、位置はゼロになり、マークは定義されません。
csq
- 作成される新しいcharバッファの元になるcharシーケンスpublic abstract CharBuffer slice()
新しいバッファの内容は、このバッファの現在位置から始まります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。新しいバッファの内容に変更を加えると、その内容がこのバッファに反映されます。2つのバッファの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファの位置はゼロ、容量とリミットはこのバッファ内に残っているchar数になります。マークは定義されません。新しいバッファは、このバッファがダイレクト・バッファである場合にかぎりダイレクト・バッファになります。また、このバッファが読取り専用バッファである場合にかぎり読取り専用バッファになります。
public abstract CharBuffer duplicate()
新しいバッファの内容は、このバッファの内容と同じになります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。新しいバッファの内容に変更を加えると、その内容がこのバッファに反映されます。2つのバッファの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファの容量、リミット、位置、マークの値は、このバッファの対応する値と同じになります。新しいバッファは、このバッファがダイレクト・バッファである場合にかぎりダイレクト・バッファになります。また、このバッファが読取り専用バッファである場合にかぎり読取り専用バッファになります。
public abstract CharBuffer asReadOnlyBuffer()
新しいバッファの内容は、このバッファの内容と同じになります。このバッファの内容に変更を加えると、その内容が新しいバッファに反映されます。しかし、新しいバッファ自体は読取り専用であり、その共有内容を変更することはできません。2つのバッファの位置、リミット、マークの値はそれぞれ異なります。
新しいバッファの容量、リミット、位置、マークの値は、このバッファの対応する値と同じになります。
このバッファ自身が読込み専用の場合は、このメソッドはduplicate
と同じように動作します。
public abstract char get()
BufferUnderflowException
- バッファの現在位置がリミット以上である場合public abstract CharBuffer put(char c)
バッファの現在位置に指定されたcharを書き込み、現在位置の値を増加します。
c
- 書き込まれるcharBufferOverflowException
- このバッファの現在位置がリミット以上である場合ReadOnlyBufferException
- このバッファが読込み専用である場合public abstract char get(int index)
index
- charの読込み位置を示すインデックスIndexOutOfBoundsException
- indexが負の数である場合、またはバッファのリミット以上である場合public abstract CharBuffer put(int index, char c)
このバッファの指定されたインデックス位置に指定されたcharを書き込みます。
index
- charの書込み先を示すインデックスc
- 書き込まれるchar値IndexOutOfBoundsException
- indexが負の数である場合、またはバッファのリミット以上である場合ReadOnlyBufferException
- このバッファが読込み専用である場合public CharBuffer get(char[] dst, int offset, int length)
このメソッドは、このバッファから指定された配列へcharを転送します。このバッファ内に残っているchar数が要求に満たない場合(つまり、length > remaining()である場合)、charは一切転送されず、BufferUnderflowException
がスローされます。
それ以外の場合、このメソッドは、length個のcharを、このバッファの現在位置から指定された配列の指定されたオフセット位置へコピーします。そのたびに、このバッファの位置がlengthずつ増加します。
このメソッドをsrc.get(dst, off, len)の形式で呼び出すと、次のループとまったく同じ結果になります。
for (int i = off; i < off + len; i++)
dst[i] = src.get():
ただし、このバッファ内に十分な数のchar数があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。dst
- charの書込み先となる配列offset
- 最初のcharの書込み先となる配列内のオフセット。dst.length以下の負でない値でなければならないlength
- 指定された配列に書き込まれる最大char数。dst.length - offset以下の負でない値でなければならないBufferUnderflowException
- このバッファ内に残っているchar数がlengthよりも少ない場合IndexOutOfBoundsException
- offsetパラメータとlengthパラメータの前提条件が満たされていない場合public CharBuffer get(char[] dst)
このメソッドは、このバッファから指定された配列へcharを転送します。このメソッドをsrc.get(a)の形式で呼び出すと、次の呼び出しと同じ結果になります。
src.get(a, 0, a.length)
dst
- コピー先配列BufferUnderflowException
- このバッファ内に残っているchar数がlengthよりも少ない場合public CharBuffer put(CharBuffer src)
このメソッドは、指定されたソース・バッファ内に残っているcharをこのバッファへ転送します。ソース・バッファ内に残っているchar数がこのバッファ内に残っているchar数よりも多い場合(つまり、src.remaining() > remaining()である場合)、charは一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定されたバッファの現在位置からこのバッファの現在位置へn = src.remaining() charをコピーします。そのたびに、両方のバッファの位置がnずつ増加します。
このメソッドをdst.put(src)の形式で呼び出すと、次のループとまったく同じ結果になります。
while (src.hasRemaining()) dst.put(src.get());ただし、このバッファ内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。
src
- charの読込み先となるソース・バッファ(このバッファ以外)BufferOverflowException
- このバッファに、ソース・バッファ内に残っているcharを格納できるだけの容量がない場合IllegalArgumentException
- ソース・バッファとしてこのバッファを指定した場合ReadOnlyBufferException
- このバッファが読込み専用である場合public CharBuffer put(char[] src, int offset, int length)
このメソッドは、指定されたソース配列からこのバッファへcharを転送します。配列からコピーするchar数がこのバッファ内に残っているchar数より多い場合(つまり、length > remaining()である場合)、charは一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定された配列の指定されたオフセット位置からこのバッファの現在位置へlength個のcharをコピーします。そのたびに、このバッファの位置がlengthずつ増加します。
このメソッドをdst.put(src, off, len)の形式で呼び出すと、次のループとまったく同じ結果になります。
for (int i = off; i < off + len; i++)
dst.put(a[i]);
ただし、このバッファ内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。src
- charの読込み先となる配列offset
- 最初のcharの読込み先となる配列内のオフセット。array.length以下の負でない値にする必要があるlength
- 指定された配列から読み取られるchar数。array.length - offset以下の負でない値でなければならないBufferOverflowException
- このバッファ内に残っている容量が不足している場合IndexOutOfBoundsException
- offsetパラメータとlengthパラメータの前提条件が満たされていない場合ReadOnlyBufferException
- このバッファが読込み専用である場合public final CharBuffer put(char[] src)
このメソッドは、ソースとなる指定されたchar配列の内容全体をこのバッファへ転送します。このメソッドをdst.put(a)の形式で呼び出すと、次の呼び出しと同じ結果になります。
dst.put(a, 0, a.length)
src
- 転送元配列BufferOverflowException
- このバッファ内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファが読込み専用である場合public CharBuffer put(String src, int start, int end)
このメソッドは、指定された文字列からこのバッファへcharを転送します。文字列からコピーするchar数がこのバッファ内に残っているchar数より多い場合(つまり、end - start > remaining()である場合)、charは一切転送されず、BufferOverflowException
がスローされます。
それ以外の場合、このメソッドは、指定された文字列のstartインデックスからこのバッファの現在位置へn = end - start charをコピーします。そのたびに、このバッファの位置がnずつ増加します。
このメソッドをdst.put(src, start, end)の形式で呼び出すと、次のループとまったく同じ結果になります。
for (int i = start; i < end; i++)
dst.put(src.charAt(i));
ただし、このバッファ内に十分な容量があることを最初に確認する動作は除きます。また、このメソッドを使用したほうがループよりもはるかに効率的です。src
- 文字列の読込み先となる配列start
- 最初のcharの読込み先となる文字列内のオフセット。string.length()以下の負でない値にする必要があるend
- 最後のcharの読込み先となる文字列内のオフセット。string.length()以下の負でない値にする必要があるBufferOverflowException
- このバッファ内に残っている容量が不足している場合IndexOutOfBoundsException
- startパラメータとendパラメータの前提条件が満たされていない場合ReadOnlyBufferException
- このバッファが読込み専用である場合public final CharBuffer put(String src)
このメソッドは、指定されたソース文字列の内容全体をこのバッファへ転送します。このメソッドをdst.put(s)の形式で呼び出すと、次の呼び出しと同じ結果になります。
dst.put(s, 0, s.length())
src
- ソース文字列BufferOverflowException
- このバッファ内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファが読込み専用である場合public final boolean hasArray()
このメソッドの戻り値がtrueであれば、array
およびarrayOffset
メソッドを安全に呼び出すことができます。
public final char[] array()
このバッファの内容に変更を加えると、返される配列の内容も変更されます。その逆も同様です。
このメソッドを呼び出す前にhasArray
メソッドを呼び出し、このバッファがアクセス可能な補助配列を持っていることを確認します。
array
、クラス: Buffer
ReadOnlyBufferException
- このバッファが配列に連動しており、しかも読込み専用である場合UnsupportedOperationException
- このバッファがアクセス可能な配列を利用しない場合public final int arrayOffset()
このバッファが配列に連動していれば、その位置pが配列のインデックスp + arrayOffset()と一致します。
このメソッドを呼び出す前にhasArray
メソッドを呼び出し、このバッファがアクセス可能な補助配列を持っていることを確認します。
arrayOffset
、クラス: Buffer
ReadOnlyBufferException
- このバッファが配列に連動しており、しかも読込み専用である場合UnsupportedOperationException
- このバッファがアクセス可能な配列を利用しない場合public abstract CharBuffer compact()
バッファの現在位置からリミットまでの間にcharが存在する場合、これらをバッファの先頭にコピーします。つまり、インデックス位置p = position()のcharがインデックス・ゼロにコピーされ、インデックス位置p + 1のcharがインデックス1にコピーされるということです。インデックス位置limit() - 1のcharがインデックスn = limit() - 1 - pにコピーされるまで、同様の処理が繰り返されます。最終的にバッファの位置はn+1に設定され、リミットは容量の値と等しくなります。マークは破棄されます。
バッファの位置は、ゼロではなく、コピーされるchar数と等しくなります。したがって、このメソッドを呼び出したあと、すぐに別の相対「put」メソッドを呼び出すことができます。
ReadOnlyBufferException
- このバッファが読込み専用である場合public abstract boolean isDirect()
public int hashCode()
charバッファのハッシュ・コードは、バッファ内に残っている要素、すなわちposition()からlimit() - 1までの要素のみに依存します。
バッファのハッシュ・コードは内容依存型です。今後バッファの内容が変更されないことが明らかでないかぎり、バッファをハッシュ・マップその他のデータ構造のキーとして使用することは避けてください。
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object ob)
2つのcharバッファは、次の場合にかぎり等価です。
要素の型が同じである
バッファ内に残っている要素数が同じである
バッファ内に残っている要素のシーケンス(開始位置とは無関係)が各点で等しい(pointwise equal)
charバッファが、その他の型のオブジェクトと等価になることはありません。
equals
、クラス: Object
ob
- このバッファと比較するオブジェクトObject.hashCode()
、HashMap
public int compareTo(CharBuffer that)
2つのcharバッファを比較する際は、バッファ内に残っている要素のシーケンスが辞書順に比較されます。このとき、双方のバッファ内に残っているシーケンスの開始位置は考慮されません。Character.compare(char,char)
を呼び出したかのように、char
要素のペアが比較されます。
charバッファとその他の型のオブジェクトを比較することはできません。
compareTo
、インタフェース: Comparable<CharBuffer>
that
- 比較対象のオブジェクト。public String toString()
また、結果として得られる文字列の最初のcharはこのバッファの位置にあるcharであるのに対して、最後のcharはインデックス位置limit() - 1にあるcharになります。このメソッドを呼び出しても、バッファの位置は変わりません。
toString
、インタフェース: CharSequence
toString
、クラス: Object
public final int length()
charシーケンスとして見た場合、charバッファのバッファ長(char数)は、位置の値以上、リミットの値より小さい値になります。この値はremaining()と等価です。
length
、インタフェース: CharSequence
public final char charAt(int index)
charAt
、インタフェース: CharSequence
index
- 読み取られるcharのインデックス(現在位置からの相対位置)。この値はremaining()以下の負でない値でなければならないIndexOutOfBoundsException
- indexの前提条件が満たされていない場合public abstract CharBuffer subSequence(int start, int end)
新しいバッファは、このバッファの内容を共有します。つまり、このバッファの内容が変更可能である場合、一方のバッファに変更を加えると他方のバッファも変更されます。新しいバッファの容量はこのバッファの容量と同じになります。新しいバッファの容量はこのバッファの容量になり、その位置はposition() + start、リミットはposition() + endになります。新しいバッファは、このバッファがダイレクト・バッファである場合にかぎりダイレクト・バッファになります。また、このバッファが読取り専用バッファである場合にかぎり読取り専用バッファになります。
subSequence
、インタフェース: CharSequence
start
- サブシーケンス内の最初のcharを示すインデックス(現在位置からの相対位置)。remaining()以下の負でない値でなければならないend
- サブシーケンス内の最後のcharのあとに続くcharを示すインデックス(現在位置からの相対位置)。start以上remaining()以下の値でなければならないIndexOutOfBoundsException
- startとendの前提条件が満たされていない場合public CharBuffer append(CharSequence csq)
このメソッドをdst.append(csq)の形式で呼び出した場合、次の呼び出しとまったく同様に動作します。
dst.put(csq.toString())
charシーケンスcsqに対するtoStringの指定に応じて、シーケンス全体が追加されないこともあります。たとえば、charバッファのtoString
メソッドを呼び出した場合、そのバッファの位置とリミットによって決まる内容を持つサブシーケンスが返されます。
append
、インタフェース: Appendable
csq
- 追加するcharシーケンス。csqがnullの場合は、このcharバッファに「null」という4 charが追加される。BufferOverflowException
- このバッファ内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファが読込み専用である場合public CharBuffer append(CharSequence csq, int start, int end)
csqがnullでないときに、このメソッドをdst.append(csq, start, end)の形式で呼び出した場合、次の呼び出しとまったく同様に動作します。
dst.put(csq.subSequence(start, end).toString())
append
、インタフェース: Appendable
csq
- サブシーケンスの追加元のcharシーケンス。csqがnullの場合は、csqに「null」という4 charが含まれているかのようにcharが追加されるstart
- サブシーケンスの最初のcharのインデックスend
- サブシーケンスの最後のcharのあとに続くcharのインデックスBufferOverflowException
- このバッファ内に残っている容量が不足している場合IndexOutOfBoundsException
- startまたはendが負の値の場合、startがendよりも大きい場合、あるいはendがcsq.length()よりも大きい場合ReadOnlyBufferException
- このバッファが読込み専用である場合public CharBuffer append(char c)
このメソッドをdst.append(c)の形式で呼び出した場合、次の呼び出しとまったく同様に動作します。
dst.put(c)
append
、インタフェース: Appendable
c
- 追加する16ビットcharBufferOverflowException
- このバッファ内に残っている容量が不足している場合ReadOnlyBufferException
- このバッファが読込み専用である場合public abstract ByteOrder order()
割り当てまたは既存のchar配列のラップによって作成されたcharバッファのbyte順序は、基礎となるハードウェアのネイティブ順序
と同じになります。byteバッファのビューとして作成されたcharバッファのbyte順序は、ビューを作成した時点のbyteバッファのbyte順序と同じになります。
public IntStream chars()
CharSequence
char
値をゼロ拡張したint
を含むストリームを返します。サロゲート・コード・ポイントにマップするすべてのcharは、解釈されずに渡されます。
ストリームの読取り中にシーケンスが変更される場合、結果は未定義です。
chars
、インタフェース: CharSequence
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.