Java 9でStringクラスに追加された新メソッドとは?chars()とcodePoints()の使い方を解説
概要
Javaにおいて、Stringクラスは不変(immutable)なクラスとして設計されています。Java 9では、このStringクラスに2つの新しいメソッドが追加されました。それがchars()メソッドとcodePoints()メソッドです。どちらのメソッドもIntStreamオブジェクトを返し、Stream APIを活用した文字列操作を簡潔に記述できるようになります。
1) chars()メソッド
chars()メソッドは、文字列内の各char値をゼロ拡張(zero-extension)したint値のストリームを返します。従来のforループを使わずに、各文字をStream APIで処理できるのが大きな特徴です。
構文
public IntStream chars()
使用例
import java.util.stream.IntStream;
public class StringCharsMethodTest {
public static void main(String args[]) {
String str = "Welcome to TutorialsPoint";
IntStream intStream = str.chars();
intStream.forEach(x -> System.out.printf("-%s", (char)x));
}
}実行結果
-W-e-l-c-o-m-e- -t-o- -T-u-t-o-r-i-a-l-s-P-o-i-n-t
上記の例では、各文字の前にハイフン(-)を出力しています。このことから、文字列が1文字ずつストリームとして処理されている様子が確認できます。
2) codePoints()メソッド
codePoints()メソッドは、文字列からUnicodeコードポイント値のストリームを返します。chars()メソッドとの主な違いは、サロゲートペア(絵文字などの補助文字に使われる、2つのcharで表現される文字)を1つのコードポイントとして正しく扱える点です。
構文
public IntStream codePoints()
使用例
import java.util.stream.IntStream;
public class StringCodePointsMethodTest {
public static void main(String args[]) {
String str = "Welcome to Tutorix";
IntStream intStream = str.codePoints();
intStream.forEach(x -> System.out.print(new StringBuilder().appendCodePoint(x)));
}
}実行結果
Welcome to Tutorix
この例では、StringBuilderのappendCodePoint()メソッドを使って、各コードポイントを再び文字に変換しながら出力しています。
chars()とcodePoints()の違い
両メソッドの主な違いは以下の通りです。
- chars():各char値(UTF-16コードユニット)を個別に処理するため、絵文字などのサロゲートペアは2つの値に分割されてしまう。
- codePoints():Unicodeコードポイント単位で処理するため、サロゲートペアも1文字として正しく扱える。
日本語を含むマルチバイト文字や絵文字を扱うアプリケーションでは、codePoints()メソッドの利用を検討するとよいでしょう。
-
Java 9における@Deprecatedアノテーションの改善点とは?新要素「since」「forRemoval」を徹底解説
@Deprecatedアノテーションとはクラス、メソッド、フィールドなど、プログラム内のあらゆる要素に付与できる@Deprecatedアノテーションは、「その要素はもはや使用すべきではない」ことを示すためのものです。要素が非推奨とされる主な理由は以下の通りです。使用すると危険であり、エラーを引き起こす可能性がある将来のバージョンで互換性がなくなる可能性がある将来のバージョンで削除される可能性があるより優れた、効率的な代替手段がすでに提供されているJava 9で追加された2つの新しい要素Java 9では、@DeprecatedアノテーションにsinceとforRemovalという2つの新しい属性
-
JavaにおけるCursorクラスの役割とは?マウスカーソル制御の基本を解説
JavaのCursorクラスとはCursorクラスは、Objectクラスのサブクラスであり、画面上のポイント(指し示す位置)やインジケーター(表示標識)として定義されます。ユーザーがマウスを使ってシステムへの入力を選択・操作する際に、その位置を視覚的に示す重要な役割を担っています。GUIアプリケーションでは、状況に応じてカーソルの形状を変えることで、ユーザーに対して直感的なフィードバックを提供できます。例えば、処理中であることを伝える砂時計型のカーソルや、クリック可能な要素を示す手型のカーソルなどが代表的な例です。利用可能なカーソルの種類Cursorクラスには、あらかじめ定義されたさまざまなカ