Java:文字列を左右反転/逆順ソートする方法

  • URLをコピーしました!

Javaで文字列を左右反転したい、または文字の並びを逆順にしたいという場面は、業務・学習のどちらでも頻繁に発生します。
ログ解析、入力チェック、回文判定、データ加工など、実務での用途は多岐にわたります。

本記事では、Javaにおける「文字列の左右反転」と「逆順ソート」について、基本から実務で安全に使える方法までを解説します。

Javaコードエディタで reverse() を使用している画面

目次

文字列の左右反転とは何か

「左右反転」とは、文字列の先頭と末尾を入れ替え、全体の並びを逆順にする処理を指します。

ABCDEF → FEDCBA
こんにちは → はちにんこ

これは「逆順化」「リバース」とも呼ばれ、配列処理の基本としても扱われます。

Javaでは文字列が不変(immutable)であるため、直接書き換えることはできません。
そのため、補助クラスや配列を利用した処理が必要になります。


StringBuilder を使った最も簡単な方法

Javaで文字列を左右反転する際、最も簡潔で安全なのが StringBuilder を利用する方法です。

サンプルコード

解説

・StringBuilder は可変クラス
・reverse() メソッドが標準で用意されている
・処理が短く、可読性が高い

この方法はパフォーマンス面でも優れており、通常の業務処理であれば最優先で採用できます。


文字配列を使って左右反転する方法

アルゴリズム学習や処理の中身を明示したい場合は、文字配列を使う方法も有効です。

サンプルコード

解説

・toCharArray() で文字配列に変換
・先頭と末尾を入れ替える処理を繰り返す
・処理の仕組みが明確で理解しやすい

試験対策やアルゴリズム理解には適していますが、実務では StringBuilder の方が簡潔です。


ループ処理で逆順に連結する方法

古いJavaコードや学習初期によく見られる方法です。

注意点

この方法は String を繰り返し連結するため、処理効率が良くありません。
大量データやループ回数が多い場合は使用を避けるべきです。


文字列の「逆順ソート」とは

左右反転と混同されやすいのが「逆順ソート」です。
これは文字の並びを単純に反転するのではなく、並び替えた結果を逆順にする処理です。

文字列: "dcab"
昇順ソート → "abcd"
逆順ソート → "dcba"Code language: JavaScript (javascript)

文字列を逆順ソートする方法

サンプルコード

解説

・Arrays.sort() は昇順のみ対応
・逆順にしたい場合は reverse() を組み合わせる
・Unicode順で並び替えられる


Comparator を使った逆順ソート(応用)

List に変換することで、Comparator を使用した逆順指定も可能です。

業務で複雑な並び替え条件が必要な場合に有効です。


マルチバイト文字(日本語)での注意点

日本語や絵文字を扱う場合、基本的な reverse() は問題なく動作します。
ただし、サロゲートペアを含む文字(一部の絵文字など)では、意図しない結果になる可能性があります。

厳密な制御が必要な場合は、コードポイント単位での処理を検討してください。


よくある質問(Q & A)

左右反転と逆順ソートは同じ意味ですか?

いいえ。左右反転は元の並びをそのまま逆にする処理で、逆順ソートは並び替えた結果を逆順にする処理です。

実務ではどの方法が推奨されますか?

単純な反転であれば StringBuilder.reverse() が最も安全で簡潔です。

パフォーマンスに差はありますか?

文字列連結を繰り返す方法は非推奨です。StringBuilder を使う方法が最も効率的です。

日本語でも正しく反転できますか?

通常の日本語文字列であれば問題ありません。


まとめ

Javaで文字列を左右反転・逆順ソートする方法は複数存在しますが、用途に応じて適切な方法を選ぶことが重要です。

・単純な反転 → StringBuilder.reverse()
・処理理解重視 → 配列操作
・並び替え → Arrays.sort() + reverse

実務では可読性と安全性を重視した実装を選択してください。

文字列を扱う処理では、可変文字列クラスの選択も重要です。
StringBuilder と StringBuffer の違いや使い分けについては、
以下の記事で詳しく解説しています。

よかったらシェアしてね!
  • URLをコピーしました!
0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
目次
0
あなたの考えが大好きです、コメントしてください。x