Javaで、文字列に表示されるすべての文字のリストと、それらの出現数を取得するにはどうすればよいですか?「私は今本当に忙しい」という文字列があるとしましょう。
i-2、a-2、r-2、m-1など。
Javaで、文字列に表示されるすべての文字のリストと、それらの出現数を取得するにはどうすればよいですか?「私は今本当に忙しい」という文字列があるとしましょう。
i-2、a-2、r-2、m-1など。
すべてのキャラクターとその数のマッピングを持っているだけです。String
usingの文字配列を取得し、拡張されたforループString#toCharArray()
を使用してループすることができます。反復ごとに、マッピングからカウントを取得し、存在しない場合は設定してから、1ずつインクリメントして、マップに戻します。かなり簡単です。
基本的なキックオフの例は次のとおりです。
String string = "I am really busy right now";
Map<Character, Integer> characterCounts = new HashMap<Character, Integer>();
for (char character : string.toCharArray()) {
Integer characterCount = characterCounts.get(character);
if (characterCount == null) {
characterCount = 0;
}
characterCounts.put(character, characterCount + 1);
}
マップの詳細については、このテーマに関するSunのチュートリアルを確認してください。
あなたはそれが「プロジェクトのため」だとコメントしましたが、それはかなり基本的で、まともなJavaの本/チュートリアルの最初の章でカバーされているので、典型的な宿題の質問です。Javaを初めて使用する場合は、基本をカバーするSunTrailsを理解することをお勧めします。
宿題ですか?それを知らずに、私は最善の答えを想定します。
あなたの問題の背後にある論理は
int
の配列を作成し、そこで数えることができます。このようにして、正しいカウンターを検索する必要はなく、正しいインデックスをインクリメントするだけです。正確なニーズはわかりませんが、大文字と小文字に関係なく出現回数をカウントしたいようです。空白などの文字も無視してください。したがって、次のようなものが必要になる場合があります。
String initial = "I am really busy right now";
String cleaned = initial.replaceAll("\\s", "") //remove all whitespace characters
.toLowerCase(); // lower all characters
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (char character : cleaned.toCharArray()) {
Integer count = map.get(character);
count = (count!=null) ? count + 1 : 1;
map.put(character, count);
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
正確な要件を満たすように正規表現を微調整します(句読点をスキップするなど)。
String input = "AAZERTTYAATY";
char[] chars = input.toCharArray();
Map<Character, Integer> map = new HashMap<>();
for (char aChar : chars) {
Integer charCount = map.putIfAbsent(aChar, 1);
if (charCount != null) {
charCount++;
map.put(aChar, charCount);
}
}