1. ホーム

[解決済み】Stringのすべての文字にfor-eachループを適用するには?

2022-04-07 19:19:27

質問

そこで、文字列の各文字に対して反復処理を行いたいのです。

そこで私は考えました。

for (char c : "xyz")

が、コンパイラーエラーが出ます。

MyClass.java:20: foreach not applicable to expression type

どうすればいいのでしょうか?

どのように解決するのですか?

最も簡単な方法は、すべての char の中に String を使用することです。 toCharArray() :

for (char ch: "xyz".toCharArray()) {
}

これによって、for-each 構成の簡潔さが得られるが、残念ながら String (を生成するために、防御的なコピーを実行しなければなりません(これは不変です)。 char[] (ミュータブル)であるため、何らかのコストペナルティが発生します。

から ドキュメント :

[ toCharArray() を返す]。 新たに確保された文字配列 その長さはこの文字列の長さであり、その内容はこの文字列で表される文字列を含むように初期化される。

配列内の文字を反復処理する、より冗長な方法があります(通常のforループ。 CharacterIterator など)でも、そのコストを払うのであれば toCharArray() for-eachが最も簡潔です。