废话不多说,直接上代码
package test;import java.lang.reflect.invocationtargetexception;import java.lang.reflect.method;import java.util.arraylist;import java.util.collections;import java.util.hashmap;import java.util.iterator;import java.util.list;import java.util.map;import java.util.map.entry;import java.util.stack;import java.util.vector;import com.sun.org.apache.bcel.internal.generic.ireturn;public class test { 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);//为空的话值为1 }else{ integer in = map.get(c);//得到的value值至少为1 in++; map.put(c, in); } } /* 使用for-each遍历 for (character c : map.keyset()) { system.out.println(map.get(c)); } */ //使用迭代器和entryset遍历 iterator<entry<character, integer>> iterator=map.entryset().iterator(); integer count =collections.max(map.values());//出现次数最多的值 character character = null; //存放次数最多的key while(iterator.hasnext()) { map.entry<character, integer> entry=(map.entry<character, integer>)iterator.next(); system.out.println(entry.getkey()+" "+entry.getvalue()); //得到出现次数最多的值的key if(entry.getvalue().equals(count)) { character=entry.getkey(); } } system.out.println("出现次数最多的是:"+character+"出现次数为"+count); }}
此题当然可以使用keyset()遍历,但是没有entryset效率高
以上就是java实战之给出字符串,统计汉字或字母出现的个数的详细内容。