大文字小文字を区別せずにソートする実装
Java では、Arrays.sort()
メソッドは文字を Unicode 値を使って比較します。大文字小文字を区別せずに文字列をソートするには、Comparator
を使ってソートアルゴリズムを変更することができます。このステップでは、前の Java コードを編集して、大文字小文字を区別せずに文字列をソートします。
import java.util.Arrays;
import java.util.Comparator;
public class SortString {
public static void main(String[] args) {
String originalString = "The quick brown fox jumps over the lazy dog";
String sortedString = "";
Character[] tempArr = toCharacterArray(originalString.toLowerCase()); // 小文字の文字列を Character 配列に変換
Arrays.sort(tempArr, new Comparator<Character>() { // 大文字小文字を区別しないコンパレータでソート
@Override
public int compare(Character c1, Character c2) {
return c1.compareTo(c2);
}
});
StringBuilder sb = new StringBuilder(tempArr.length); // StringBuilder オブジェクトを作成
for (Character c : tempArr) {
sb.append(c.charValue()); // ソート済みの文字を StringBuilder オブジェクトに追加
}
sortedString = sb.toString(); // StringBuilder オブジェクトを文字列に変換
System.out.println("Original String: " + originalString);
System.out.println("Sorted String: " + sortedString);
}
// 文字列を Character 配列に変換するメソッド
private static Character[] toCharacterArray(String str) {
Character[] arr = new Character[str.length()];
for (int i = 0; i < str.length(); i++) {
arr[i] = str.charAt(i);
}
return arr;
}
}