文字列内の各文字の頻度をカウントする関数を作成する必要があります。
これは例です:
次のファイルを受け取ります: notes.txt メッセージが含まれています: "こんにちは、ネブラスカのジャックです"
ファイルを読んだときの結果は次のとおりです。
a: 3 H: 1 e: 2 l: 2 など
Stringtokeizer を使用できると誰かが教えてくれましたが、これは本当ですか?
マルチセット/バッグデータ構造アプローチを使用できます。Guavaを使用すると、次のようになります。
public static void main(String... a) {
final String str = "Hello this is Jack from Nebraska";
final Builder<Character> b = ImmutableMultiset.builder();
for (char c : str.toCharArray())
b.add(c);
System.out.println(b.build());
}
結果:
[H, e x 2, l x 2, o x 2, x 5, t, h, i x 2, s x 3, J, a x 3, c, k x 2, f, r x 2, m, N, b]
public static void main(String... args) {
String str = "Hello this is Jack from Nebraska";
Map<Character, Integer> frequencies = new HashMap<Character, Integer>();
for (char c : str.toCharArray()) {
if (!frequencies.containsKey(c))
frequencies.put(c, 1);
else
frequencies.put(c, frequencies.get(c) + 1);
}
System.out.println(frequencies);
}
出力:
{f=1, =5, e=2, b=1, c=1, a=3, o=2, N=1, l=2, m=1, H=1, k=2, h=1, J=1, i=2, t=1, s=3, r=2}