Javaで2つの文字列を比較する方法|compareTo()の使い方を徹底解説
compareTo()メソッドとは
Javaでは、compareTo()メソッドを使うことで、2つの文字列を辞書順(レキシコグラフィック順)に比較できます。このメソッドはStringクラスに定義されており、引数として渡したオブジェクトと現在の文字列を比較し、その結果をint型の値として返します。
構文は以下の通りです。
int compareTo(Object o)
ここで、oは比較対象となるオブジェクトです。
戻り値の意味
- 0:引数の文字列が現在の文字列と辞書順で等しい場合
- 0より小さい値:引数の文字列が現在の文字列より辞書順で大きい場合
- 0より大きい値:引数の文字列が現在の文字列より辞書順で小さい場合
compareTo()の使用例
実際のコードで動作を確認してみましょう。
public class Demo {
public static void main(String args[]) {
String str1 = "Strings are immutable";
String str2 = new String("Strings are immutable");
String str3 = new String("Integers are not immutable");
int result = str1.compareTo( str2 );
System.out.println(result);
result = str2.compareTo( str3 );
System.out.println(result);
}
}実行結果
0 10
最初の比較では、str1とstr2が同じ内容のため「0」が出力されます。一方、str2とstr3を比較すると「10」が出力されます。これは先頭文字の差('S' − 'I' = 10)に由来し、「Strings are immutable」の方が「Integers are not immutable」より辞書順で後ろにあることを示しています。
大文字・小文字を無視して比較するcompareToIgnoreCase()
大文字と小文字の違いを無視して文字列を比較したい場合は、compareToIgnoreCase()メソッドを使用します。このメソッドは、指定された文字列が現在の文字列より大きい場合は負の整数、等しい場合は0、小さい場合は正の整数を返します(大文字・小文字の違いは考慮されません)。
構文は以下の通りです。
int compareToIgnoreCase(String str)
ここで、strは比較対象となる文字列です。
compareToIgnoreCase()の使用例
大文字・小文字を無視して文字列を比較する例を見てみましょう。
public class Demo {
public static void main(String args[]) {
String str1 = "Strings are immutable";
String str2 = "Strings are immutable";
String str3 = "Integers are not immutable";
int result = str1.compareToIgnoreCase( str2 );
System.out.println(result);
result = str2.compareToIgnoreCase( str3 );
System.out.println(result);
result = str3.compareToIgnoreCase( str1 );
System.out.println(result);
}
}実行結果
0 10 -10
同じ内容の文字列同士の比較では「0」が返され、順序が異なる比較では正負が反転した値(10と-10)が返されることが確認できます。このように、compareToIgnoreCase()を使えば、大文字・小文字の違いに左右されない柔軟な文字列比較が可能になります。
-
Javaで2つのリストを比較する方法|等価チェック・差分抽出・共通要素の取得
JavaのListインターフェースには、2つのリストを比較して共通要素や不足要素を見つけるための便利なメソッドが用意されています。この記事では、等価性のチェック、並び順を無視した比較、差分の抽出、共通要素の取得という4つのケース別に、具体的なコード例とともに解説します。 ソートされていない2つのリストの等価性を比較する 2つのリストが「同じ要素を同じインデックス位置に持つ」、つまり完全に一致しているかどうかを確認したい場合は、equals()メソッドを使用します。 import java.util.Arrays; import java.util.List; public class Com
-
Javaで文字列を比較する方法|equals()とequalsIgnoreCase()の使い分けを徹底解説
Javaで文字列の等価性を比較する際は、Stringクラスが提供するequalsメソッドまたはequalsIgnoreCaseメソッドを使用するのが基本です。この記事では、それぞれのメソッドの使い方に加えて、==演算子で文字列を比較してはいけない理由についても詳しく解説します。 equals()メソッドで文字列を比較する 2つの文字列を比較し、大文字と小文字の違いまで厳密に判定したい場合はequals()メソッドを使用します。 次のコード例では、2つのStringインスタンスが大文字小文字を含むすべての文字において一致しているかどうかを判定しています。 public class Compare