Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java入門】2つの文字列を辞書式順序で比較する方法をわかりやすく解説

本記事では、Javaを使って2つの文字列を辞書式順序(レキシコグラフィック順)で比較する方法を詳しく解説します。文字列(String)とは、1つ以上の文字が並んだデータ型で、ダブルクォート(" ")で囲んで表現します。Javaにおいて文字列は単なる文字の並びではなく、オブジェクトとして扱われるという特徴があります。

文字列の辞書式比較には、Stringクラスが提供する compareTo() メソッドを使用します。このメソッドは、2つの文字列を先頭から1文字ずつUnicodeのコードポイント値で比較し、その差分を整数値(int)として返します。

  • 戻り値が正の数 → 最初の文字列の方が辞書式順序で「大きい」(後ろ)
  • 戻り値が負の数 → 最初の文字列の方が辞書式順序で「小さい」(前)
  • 戻り値が0 → 2つの文字列は完全に一致

実行例

以下に具体的な入力と出力の例を示します。

入力:

入力文字列1: Morning
入力文字列2: Evening

出力:

2つの文字列の比較結果: 8

この結果「8」は、先頭文字同士のUnicodeコードポイントの差('M' = 77、'E' = 69、77 − 69 = 8)を表しています。

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 2つの文字列変数 input_string_1 と input_string_2 を宣言する
ステップ3 - 各変数に値を設定する
ステップ4 - compareTo() メソッドを使って2つの文字列を比較する
ステップ5 - 比較結果を表示する
ステップ6 - 処理を終了する

例1:mainメソッド内にすべての処理を記述する場合

まず、すべての処理を main メソッド内にまとめて記述するシンプルな例から見ていきましょう。

public class Demo {
    public static void main(String[] args) {
        String input_string_1 = "Morning";
        System.out.println("1つ目の文字列: " + input_string_1);
        String input_string_2 = "Evening";
        System.out.println("2つ目の文字列: " + input_string_2);
        System.out.println("\n2つの文字列の比較結果:");
        System.out.println(input_string_1.compareTo(input_string_2));
    }
}

実行結果

1つ目の文字列: Morning
2つ目の文字列: Evening

2つの文字列の比較結果:
8

例2:オブジェクト指向スタイルでメソッドに処理を分割する場合

続いて、オブジェクト指向プログラミングの考え方に沿って、比較処理を独立したメソッドとしてカプセル化した例を紹介します。処理を部品化することで、コードの再利用性と可読性が向上します。

public class Demo {
    static void compare(String input_string_1, String input_string_2){
        System.out.println("\n2つの文字列の比較結果:");
        System.out.println(input_string_1.compareTo(input_string_2));
    }
    public static void main(String[] args) {
        String input_string_1 = "Morning";
        System.out.println("1つ目の文字列: " + input_string_1);
        String input_string_2 = "Evening";
        System.out.println("2つ目の文字列: " + input_string_2);
        compare(input_string_1, input_string_2);
    }
}

実行結果

1つ目の文字列: Morning
2つ目の文字列: Evening

2つの文字列の比較結果:
8

まとめ

Javaで文字列を辞書式順序に比較する場合は、compareTo() メソッドを使うのが基本です。等しいかどうかだけを判定したい場合は equals() メソッド、大文字と小文字の違いを無視して比較したい場合は compareToIgnoreCase() メソッドを活用するとよいでしょう。用途に応じてこれらのメソッドを使い分けることで、より安全で読みやすい文字列処理を実装できます。

  1. 【C言語】strncmpライブラリ関数を使って2つの文字列を比較するプログラムの作り方

    strncmpは、C言語のヘッダーファイル「string.h」に定義されている標準ライブラリ関数の一つです。この関数を使用すると、2つの文字列を比較し、どちらの文字列が大きい(辞書順で後ろにある)のかを判定することができます。 strcmp関数(文字列比較) strcmp関数は、2つの文字列を比較するための関数です。戻り値として、両方の文字列の中で最初に一致しなかった文字同士のASCIIコードの差を返します。 構文 int strcmp(string1, string2); 差が0の場合:string1 = string2(2つの文字列は等しい) 差が正の値の場合:string1 &

  2. C++で2つの2進数文字列を加算するプログラムの書き方

    2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁