Hashmap实现计算每个字符的出现次数

下面的代码是计算每个字符的出现次数,它应该打印计数。 但是我试过的代码我只得到1我不知道我应该做的改变。 请帮帮我。

import java.io.BufferedReader; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; class Count_CharMap { public static void main(String[] args) { try { FileInputStream file = new FileInputStream("D:\\trial.txt"); DataInputStream dis = new DataInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(dis)); String Contents=""; String str=""; while ((Contents = br.readLine()) != null) { str+=Contents; } char[]char_array =str.toCharArray(); int count = 0; char ch = char_array[count]; Map charCounter=new HashMap(); for(int i=0;i<str.length();i++) { if(charCounter.containsKey(char_array[i])) { charCounter.put(ch, charCounter.get(ch)+1); } else { charCounter.put(ch, 1); } } for(Character key:charCounter.keySet()) { System.out.println(key+""+charCounter.get(key)); } } catch(IOException e1){ System.out.println(e1); } } } 

实际输出应该是如果我在我的trial.txt中有abcdabc它应该打印2 b 2c 2 d 1。

通过每次执行循环,您将char ch设置为相同的字符。

它应该是:

 ch = char_array[i]; if(charCounter.containsKey(ch)){ charCounter.put(ch, charCounter.get(ch)+1); } else { charCounter.put(ch, 1); } 

在for循环中。

Java 8流:

 Map map = Arrays.stream(string.split("")). collect(Collectors.groupingBy(c -> c, Collectors.counting())); 

Guava HashMultiset :

 Multiset set = HashMultiset.create(Chars.asList("bbc".toCharArray())); assertEquals(2, set.count('b')); 

Hai All下面的代码是计算每个字符的出现次数,它应该打印计数。 可能对你有所帮助。谢谢你的光临

package com.corejava;

 import java.util.Map; import java.util.TreeMap; public class Test { public static void main(String[] args) { String str = "ramakoteswararao"; char[] char_array = str.toCharArray(); System.out.println("The Given String is : " + str); Map charCounter = new TreeMap(); for (char i : char_array) { charCounter.put(i,charCounter.get(i) == null ? 1 : charCounter.get(i) + 1); } for (Character key : charCounter.keySet()) { System.out.println("occurrence of '" + key + "' is "+ charCounter.get(key)); } } } 
 import java.util.HashMap; import java.util.Map; ... Map freq = new HashMap(); ... int count = freq.containsKey(word) ? freq.get(word) : 0; freq.put(word, count + 1); 

在for循环中

ch = char_array[i];
charCounter.put(charCounter.contains(ch)?charCounter.get(ch)+1:1);

 import java.util.TreeMap; public class OccuranceDemo { public static void main(String[] args) { TreeMap mp=new TreeMap(); String s="rain rain go away"; String[] arr = s.split(" "); int length=arr.length; for(int i=0;i 
  String str=new String("aabbbcddddee"); char[] ch=str.toCharArray(); HashMap hm=new HashMap(); for(char ch1:ch) { if(hm.containsKey(ch1)) { hm.put(ch1,hm.get(ch1)+1); } else { hm.put(ch1,1); } } Set s1=hm.entrySet(); Iterator itr=s1.iterator(); while(itr.hasNext()) { Map.Entry m1=(Map.Entry)itr.next(); System.out.println(m1); } 
 import java.util.*; public class Test { public static void main(String[] args) { String str = "STACKOVERFLOW"; char[] char_array = str.toCharArray(); System.out.println("The Given String is : " + str); Map charCounter = new TreeMap(); for (char i : char_array) { charCounter.put(i,charCounter.get(i) == null ? 1 : charCounter.get(i) + 1); } for (Character key : charCounter.keySet()) { System.out.println("occurrence of '" + key + "' is "+ charCounter.get(key)); } } } 

public void mapPractices(){

  Map map = new HashMap<>(); String dataString = "!@#$%^&*()__)(*&^%$#@!@#$%^&*(*&^%$#@!@#$%^&*()(*&^%$#@!@#$%^&*()(*&^%$#@!@#$%^&*()(*&^%$#"; for (int i = 0; i < dataString.length(); i++) { char charAt = dataString.charAt(i); if (map.containsKey(charAt)) { int val = map.get(charAt); map.put(charAt, val+1); } else { map.put(charAt, +1); } } System.out.println("Characters ant the string=" + map); }