Java String.compareTo()マスター:構文、ユースケース、実践例
JavaのcompareTo()とは
compareTo()メソッドは2つの文字列を辞書順で比較します。各文字がUnicode値に変換され、相対順序を示すintを返します。文字列が同一なら0、呼び出し元が引数より前なら負、後なら正を返します。
このメソッドはjava.lang.Comparableインターフェースで定義されています。
構文
public int compareTo(String str)
パラメータ: str — 呼び出し元文字列と比較する文字列。
戻り値: 辞書順に応じて負・ゼロ・正のint。
< 0— 呼び出し元文字列が辞書順で先== 0— 2文字列が等しい> 0— 引数文字列が辞書順で先
例1: 基本用法
public class SampleString {
public static void main(String[] args) {
String str = "a";
System.out.println("Compare \"a\" to \"b\": " + str.compareTo("b"));
str = "b";
System.out.println("Compare \"b\" to \"a\": " + str.compareTo("a"));
str = "b";
System.out.println("Compare \"b\" to \"b\": " + str.compareTo("b"));
}
}
出力
- Compare "a" to "b": -1
- Compare "b" to "a": 1
- Compare "b" to "b": 0
説明:
- 「a」はアルファベット順で「b」より前なので負の結果
- 「b」は「a」より後なので正の結果
- 同一文字列ならゼロ
例2: 大文字小文字区別 vs 無視
public class SampleString {
public static void main(String[] args) {
String str = "RockStar";
System.out.println("Case-sensitive compare to \"rockstar\": " + str.compareTo("rockstar"));
System.out.println("Case-insensitive compare to \"ROCKSTAR\": " + str.compareToIgnoreCase("ROCKSTAR"));
}
}
出力
- Case-sensitive compare to "rockstar": -32
- Case-insensitive compare to "ROCKSTAR": 0
compareTo()を使うべき場面
compareTo()は、名前リストのソートや辞書検索など、文字列の自然(辞書)順序が必要な場合に使用。String.compareToIgnoreCase()と同じルールだが大文字小文字を尊重します。
典型的シナリオ:
Collections.sort()でStringオブジェクトコレクションをソート- 文字列比較が必要なカスタムクラスで
Comparable実装 - ソート済み文字列配列での二分探索
例3: 実践的比較
public class CompareDemo {
public static void main(String[] args) {
String s1 = "Guru1";
String s2 = "Guru2";
System.out.println("String 1: " + s1);
System.out.println("String 2: " + s2);
int result = s1.compareTo(s2);
if (result < 0) {
System.out.println("\"" + s1 + "\" is lexicographically higher than \"" + s2 + "\"");
} else if (result == 0) {
System.out.println("\"" + s1 + "\" is lexicographically equal to \"" + s2 + "\"");
} else {
System.out.println("\"" + s1 + "\" is lexicographically less than \"" + s2 + "\"");
}
}
}
出力
- String 1: Guru1
- String 2: Guru2
- "Guru1" is lexicographically higher than "Guru2"
Java
- Python print()関数の実践ガイド:基本から応用まで
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Java String.length()メソッド:文字列サイズ取得の実例解説
- Java String.indexOf()マスター:部分文字列検索と実践例
- Java String.charAt()完全解説:構文、戻り値、例外、実例
- Java String.contains()メソッド:部分文字列チェックの実践例
- Java String.endsWith()マスター:文字列サフィックスチェック実例付き
- Java文字列置換マスター:replace()、replaceAll()、replaceFirst()徹底解説
- Java BufferedReader でファイル読み込み:実践ガイドと例
- JavaでcharをStringに変換する方法:実践例とベストプラクティス
- Javaで再帰を使って文字列を反転させる方法