【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.compare
やCollator
クラスの使用も検討してください。