ホームページ >Java >&#&チュートリアル >文字列内の文字の出現頻度を効率的にカウントするにはどうすればよいですか?
文字列内の文字の頻度をカウントする
プログラミングにおける一般的なタスクは、指定された文字列内の文字の頻度をカウントすることです。 「aasjjikkk」という文字列があるとします。一意の各文字の数を調べたいと思います。結果は、「2 'a'、1 's'、2 'j'、1 'i'、3 'k'」となります。
Java Map の使用
1 つの効率的な解決策は、キー (この場合は文字) と値 (出現回数) を関連付ける Java マップを利用することです。文字列を走査し、各文字がすでにマップ内に存在するかどうかを確認します。存在する場合は、そのカウントをインクリメントします。それ以外の場合は、カウント 1 で挿入します。
<code class="java">Map<Character, Integer> map = new HashMap<>(); String s = "aasjjikkk"; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); Integer val = map.get(c); if (val != null) { map.put(c, val + 1); } else { map.put(c, 1); } }
このアプローチでは、キーと値のペアの形式で文字数の自然な表現が提供されます。
を使用する代替ソリューションMultiset
代わりに、Guava の Multiset データ構造を使用すると、マップを明示的に維持せずに要素の出現をカウントできます。
<code class="java">Multiset<Character> multiset = HashMultiset.create(); String s = "aasjjikkk"; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); multiset.add(c); }</code>
マルチセットは、文字列内の各文字のカウントを保持するようになりました。文字列。
以上が文字列内の文字の出現頻度を効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。