【Java】文字列を大小比較する方法(compareTo, compareToIgnoreCase)

【Java】文字列を大小比較する方法(compareTo, compareToIgnoreCase)

このページでは、Javaの文字列比較メソッドであるcompareToおよびcompareToIgnoreCaseについて解説します。例を多く交えながら、詳細に説明します。

compareToの概要

compareToメソッドは、文字列を辞書順に比較するためのメソッドです。このメソッドは、StringクラスがComparableインターフェースを実装しているため利用できます。

基本的なシグネチャは以下の通りです:

public int compareTo(String anotherString)

戻り値は以下の3つのいずれかです:

  • 0:両文字列が等しい場合
  • 負の値:呼び出し元の文字列が引数より辞書順で小さい場合
  • 正の値:呼び出し元の文字列が引数より辞書順で大きい場合

compareToの動作例

例をいくつか示します:


String str1 = "apple";
String str2 = "banana";
String str3 = "apple";

System.out.println(str1.compareTo(str2)); // 出力: 負の値 (str1がstr2より小さい)
System.out.println(str1.compareTo(str3)); // 出力: 0 (両者が等しい)
System.out.println(str2.compareTo(str1)); // 出力: 正の値 (str2がstr1より大きい)
    

さらに、Unicodeのコードポイントに基づいて比較されるため、大文字小文字で結果が異なることがあります。


String str4 = "Apple";
String str5 = "apple";

System.out.println(str4.compareTo(str5)); // 出力: 負の値 (大文字が小文字より小さい)
    

compareToIgnoreCaseの概要

compareToIgnoreCaseメソッドは、大文字小文字を区別せずに文字列を比較するためのメソッドです。

基本的なシグネチャは以下の通りです:

public int compareToIgnoreCase(String str)

戻り値の解釈はcompareToと同じです。

compareToIgnoreCaseの動作例

例を示します:


String str1 = "Apple";
String str2 = "apple";
String str3 = "Banana";

System.out.println(str1.compareToIgnoreCase(str2)); // 出力: 0 (大文字小文字を無視して等しい)
System.out.println(str1.compareToIgnoreCase(str3)); // 出力: 負の値 (辞書順でstr1が小さい)
    

注意点

compareToおよびcompareToIgnoreCaseを使用する際に注意すべき点を以下に示します:

  • 文字列がnullの場合、NullPointerExceptionが発生します。
  • Unicodeのコードポイント順に基づいて比較されるため、期待した辞書順と異なる場合があります。
  • アルゴリズム上、compareToIgnoreCaseは計算コストがわずかに高くなる可能性があります。

文字列の比較を安全に行う場合、Objects.compareCollatorクラスの使用も検討してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です