Java 文字列における文字の頻度

JavaBeginner
オンラインで実践に進む

はじめに

Java では、String クラスには、文字の頻度を求めるために使用できるいくつかのメソッドが用意されています。replace() メソッド、chars() メソッド、およびカスタム ループを使用して、文字列内の文字の出現回数を求めることができます。この実験では、これらのメソッドを使用して Java の String 内の文字の出現回数をカウントします。

Java ファイルを作成する

~/project ディレクトリに CharOccurrence.java という名前の新しい Java ファイルを作成し、テキスト エディタで開きます。

cd ~/project
touch CharOccurrence.java

replace() メソッドを使用する

このステップでは、replace() メソッドを使用して文字列内の文字のカウントを求めます。

public class CharOccurrence {
 public static void main(String[] args){
  String str = "abracadabra-banana";
  System.out.println(str);
  // count occurrence
  int count = str.length() - str.replace("a", "").length();
  System.out.println("occurrence of a: "+count);
 }
}

ファイルを保存して閉じます。次のコマンドで Java プログラムをコンパイルします。

javac CharOccurrence.java

次のコマンドで Java プログラムを実行します。

java CharOccurrence

Java 8 で chars() と filter() メソッドを使用する

このステップでは、文字のストリームを返す chars() メソッドを使用し、次に filter() メソッドを使って文字列に含まれるすべての指定文字を取得します。count() メソッドを使って、フィルタリングされたストリームのカウントを取得します。

public class CharOccurrence {
 public static void main(String[] args){
  String str = "abracadabra-banana";
  System.out.println(str);
  // count occurrence
  long count = str.chars().filter(ch -> ch == 'a').count();
  System.out.println("occurrence of a: "+count);
 }
}

ファイルを保存して閉じます。次のコマンドで Java プログラムをコンパイルします。

javac CharOccurrence.java

次のコマンドで Java プログラムを実行します。

java CharOccurrence

カスタム ループを使用する

これは、文字列内の文字のカウントを求める従来の解決策です。ここでは、ループを使って文字列の各文字をトラバースし、指定されたインデックスに存在する文字を返す charAt() メソッドを使って文字を比較し、最後に文字が目的の文字と一致するかどうかをカウントします。

public class CharOccurrence {
 public static void main(String[] args){
  String str = "abracadabra-banana";
  System.out.println(str);
  // count occurrence
  int count = 0;
     for (int i=0; i < str.length(); i++)
     {
         if (str.charAt(i) == 'a')
         {
              count++;
         }
     }
  System.out.println("occurrence of a: "+count);
 }
}

ファイルを保存して閉じます。次のコマンドで Java プログラムをコンパイルします。

javac CharOccurrence.java

次のコマンドで Java プログラムを実行します。

java CharOccurrence

まとめ

この実験では、Java の文字列内の文字の出現回数をカウントするための 3 つの異なる方法を学びました。replace()chars() および filter() メソッドと、カスタム ループを使用しました。すべての方法はとても使いやすいものです。上記のいずれかの方法を、ご都合やユースケースに応じて使うことができます。