Java で文字列をアルファベット順に比較する
Java で 2つ以上の文字列を比較する方法はいくつかありますが、文字列を辞書式(アルファベット順)で比較したい場合は、こちらの記事を参照します。辞書式順序は、辞書内の単語の配置に従います。以下に、Java で文字列をアルファベット順に比較する 2つの方法を示す例を示します。
compareTo()
を使用して文字列をアルファベット順に比較する
この例では、いくつかの文字列を比較して、結果が正しいかどうかを確認します。compareTo()
メソッドには String
クラスが付属しているため、任意の文字列で呼び出して、別の文字列と比較できます。以下では、s1
と s2
、s3
と s4
、s5
と s6
などを比較します。
compareTo()
を使用して文字列を比較すると、このメソッドは、文字列の前後または等しいかどうかを示す int
値を返します。たとえば、s1.compare(s2)
を使用して、値が apple
の s1
と orange
の s2
を比較すると、comparedResult
関数は負の整数を取得します。これは、s1
の値は s2
の前にあります。
s3
が s4
と比較される場合のように、comparedResult
が正の整数を取得する場合、辞書式順序では大文字が小文字の前に来るため、s3
は s4
の後に来ることを意味します。
compareTo()
メソッドがゼロを返す場合、s9
と s10
の場合のように、比較された両方の文字列が等しいことを意味します。
class CompareStrings {
public static void main(String args[]) {
String s1 = "apple";
String s2 = "orange";
compareStrings(s1, s2);
String s3 = "apple";
String s4 = "Orange";
compareStrings(s3, s4);
String s5 = "sole";
String s6 = "soul";
compareStrings(s5, s6);
String s7 = "john";
String s8 = "johnson";
compareStrings(s7, s8);
String s9 = "one";
String s10 = "one";
compareStrings(s9, s10);
}
public static void compareStrings(String s1, String s2) {
int comparedResult = s1.compareTo(s2);
if (comparedResult > 0) {
System.out.println(s1 + " comes after " + s2);
} else if (comparedResult < 0) {
System.out.println(s1 + " comes before " + s2);
} else {
System.out.println(s1 + " is equal to " + s2);
}
}
}
出力:
apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one is equal to one
従来の方法を使用して文字列をアルファベット順に比較する
この例では、前の例と同じ出力で同じ文字列を使用しますが、方法が異なります。クラスのメソッドを使用する代わりに、独自のメソッドを作成します。compareStrings()
は、比較が行われるメソッドです。
compareStrings()
では、文字列 s1
と s2
の両方が終了するまでチェックするループを作成します。ループ内では、最初に charAt()
を使用して文字列の文字を取得し、それを int
にキャストします。これは ASCII 値を返します。両方の文字列に対してこれを行い、ASCII 値を比較します。すべての ASCII 値が等しい場合、それは両方の文字列も等しいことを意味します。
ASCII 値が異なる場合は、(int) s1.charAt(i) - (int) s2.charAt(i);
を使用して文字列の ASCII 値の差を返します。ループの後、文字列の長さを確認し、文字列間の差を返します。
最後に、compareStrings()
メソッドによって返された int
値を取得し、それを文字列とともに getComparisonResult()
関数に渡します。この関数は、文字列が前後にあるかどうか、またはその結果を出力します。等しい。
class CompareStrings {
public static void main(String[] args) {
String s1 = "apple";
String s2 = "orange";
int getValue1 = compareStrings(s1, s2);
String s3 = "apple";
String s4 = "Orange";
int getValue2 = compareStrings(s3, s4);
String s5 = "sole";
String s6 = "soul";
int getValue3 = compareStrings(s5, s6);
String s7 = "john";
String s8 = "johnson";
int getValue4 = compareStrings(s7, s8);
String s9 = "one";
String s10 = "one";
int getValue5 = compareStrings(s9, s10);
getComparisonResult(getValue1, s1, s2);
getComparisonResult(getValue2, s3, s4);
getComparisonResult(getValue3, s5, s6);
getComparisonResult(getValue4, s7, s8);
getComparisonResult(getValue5, s9, s10);
}
public static int compareStrings(String s1, String s2) {
for (int i = 0; i < s1.length() && i < s2.length(); i++) {
if ((int) s1.charAt(i) == (int) s2.charAt(i)) {
continue;
} else {
return (int) s1.charAt(i) - (int) s2.charAt(i);
}
}
if (s1.length() < s2.length()) {
return (s1.length() - s2.length());
} else if (s1.length() > s2.length()) {
return (s1.length() - s2.length());
} else {
return 0;
}
}
private static void getComparisonResult(int value, String s1, String s2) {
if (value > 0) {
System.out.println(s1 + " comes after " + s2);
} else if (value < 0) {
System.out.println(s1 + " comes before " + s2);
} else {
System.out.println(s1 + " and " + s2 + " are equal");
}
}
}
出力:
apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one and one are equal
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn