计算字符串每个字符出现的次数
package test001; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; public class EveryStrCount { public static void main(String[] args) { String str = "程序员好吗>序员好吗>程序序家序序序序aabb;;;"; Map<Character,Integer> map = new HashMap<Character,Integer>(); char[] ch = str.toCharArray(); /*将字符和出现的个数存入到Map*/ for(char c:ch){ if(map.get(c)==null){ map.put(c, 1); }else{ Integer in = map.get(c); in++; map.put(c, in); } } //取出key集合 Set<Character> set = map.keySet(); //根据key,取出value就可以算出字符出现的个数 for(Character c:set) { System.out.println("["+c+"]"+":出现的次数为:"+map.get(c)); } System.out.println(); //取出value集合 Collection<Integer> col = map.values(); //取出最大值(也就是出现最多的次数) int charMaxIndex = Collections.max(col); //取出最小值(也就是出现最少的次数) int charMinIndex = Collections.min(col); //Map.Entry是一个接口,Map.entrySet方法返回映射的 collection 视图,获得映射项引用的 //唯一方法是通过此 collection 视图的迭代器来实现。 for(Map.Entry<Character, Integer> entry : map.entrySet()) { if(entry.getValue().equals(charMaxIndex)) { System.out.println("出现次数最多的字符是:"+entry.getKey()+":"+"它出现了:"+charMaxIndex+"次"); } else if(entry.getValue().equals(charMinIndex)) { System.out.println("出现次数最少的字符是:"+entry.getKey()+":"+"它出现了:"+charMinIndex+"次"); } } } }
运行结果:
[员]:出现的次数为:2 [b]:出现的次数为:2 [a]:出现的次数为:2 [;]:出现的次数为:3 [程]:出现的次数为:2 [吗]:出现的次数为:2 [好]:出现的次数为:2 [>]:出现的次数为:2 [家]:出现的次数为:1 [序]:出现的次数为:8 出现次数最少的字符是:家:它出现了:1次 出现次数最多的字符是:序:它出现了:8次