Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで文字列をアルファベット順にソートする2つの方法を解説

Javaでは、文字列を構成する文字をアルファベット順に並べ替えたい場面がよくあります。この記事では、代表的な2つの方法――toCharArray()メソッドとArrays.sort()を組み合わせる方法、そしてループ処理で手動的にソートする方法――を、サンプルコード付きでわかりやすく解説します。

toCharArray()メソッドを使う方法

StringクラスのtoCharArray()メソッドは、文字列をchar型の配列に変換して返します。これをArraysクラスのsort()メソッドと組み合わせることで、短いコードで文字列をアルファベット順にソートできます。

手順は以下の通りです。

  • 対象となる文字列を取得します。
  • toCharArray()メソッドを使って、文字列をchar型配列に変換します。
  • Arraysクラスのsort()メソッドで配列をソートします。
  • ソート済みの配列をStringのコンストラクタに渡し、再び文字列に戻します。

コード例

import java.util.Arrays;
import java.util.Scanner;
public class SortingString {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string value: ");
        String str = sc.nextLine();
        char charArray[] = str.toCharArray();
        Arrays.sort(charArray);
        System.out.println(new String(charArray));
    }
}

実行結果

Enter a string value:
Tutorialspoint
Taiilnooprsttu

入力した「Tutorialspoint」の各文字が、Unicode(ASCII)の順序に従って「Taiilnooprsttu」と並べ替えられています。大文字の方が小文字より先に配置される点に注意してください。

ループ処理で手動ソートする方法

標準ライブラリに頼らず、要素の比較と入れ替えを自分で実装してソートすることもできます。ここでは選択ソートに近い手法を紹介します。

  • 対象となる文字列を取得します。
  • toCharArray()メソッドで文字列をchar型配列に変換します。
  • 先頭の要素とそれ以降の要素を順番に比較していきます。
  • 前の要素が後ろの要素より大きければ、両者を入れ替えます。
  • 次に2番目と3番目の要素を比較し、同様に入れ替えます。
  • これを配列の末尾まで繰り返すと、昇順に並び替えられます。

コード例

import java.util.Arrays;
import java.util.Scanner;
public class SortingString {
    public static void main(String args[]) {
        int temp, size;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string value: ");
        String str = sc.nextLine();
        char charArray[] = str.toCharArray();
        size = charArray.length;
        for(int i = 0; i < size; i++ ) {
            for(int j = i+1; j < size; j++) {
                if(charArray[i]>charArray[j]) {
                    temp = charArray[i];
                    charArray[i] = charArray[j];
                    charArray[j] = (char) temp;
                }
            }
        }
        System.out.println("Sorted character array: " + Arrays.toString(charArray));
    }
}

実行結果

Enter a string value:
Tutorialspoint
Sorted character array: [T, a, i, i, l, n, o, o, p, r, s, t, t, u]

なお、この手動ソートの計算量はO(n²)であるため、長い文字列を扱う場合はArrays.sort()を使用する方が効率的です。また、日本語などマルチバイト文字の自然な順序でソートしたい場合や、大文字小文字を区別せずに並べ替えたい場合は、java.text.Collatorクラスの利用も検討するとよいでしょう。

  1. Pythonで文字列の文字をアルファベット順に並べ替える方法

    sorted()関数とjoin()メソッドを組み合わせる Pythonで文字列内の文字をアルファベット順に並べ替えるには、組み込み関数のsorted()を使用します。sorted()は並べ替えられた文字のリストを返すため、その後にjoin()メソッドでリストの要素を連結すると、並べ替え済みの文字列として取得できます。 >>> s = helloworld >>> .join(sorted(s)) dehllloorw この例では、文字列helloworldに含まれるすべての文字(重複を含む)がアルファベット順に並べ替えられ、dehllloorwという結果が得

  2. JavaでJSONファイルを文字列(String)として読み込む方法

    この記事では、JavaでJSONファイルをString型の変数として読み込む方法を解説します。特にAPIテストの際に、エンドポイントへJSONペイロードをPOSTしたいケースなどで非常に便利なテクニックです。 JSONペイロードをあらかじめファイルとして保存しておき、そのファイルを文字列として読み込めば、POSTリクエストのボディとしてそのまま利用できます。 JSONファイルを文字列として読み込む基本手法 まず、以下の場所にJSONファイルが配置されているものと仮定します。 src/test/resources/myFile.json { name:David, age:30, h