有一个字符串,不知道有多少个字符,可能很长,算出出现最多的有哪些字符?
public class Test2 {
public static void main(String args[]){
String str=" ddvdlkd黄黄黄黄 黄 黄fdfd黄d";
getmax(str);
}
public static void getmax(String arryS){
HashMap<String ,Integer> map =new HashMap<String ,Integer>();
if(arryS!=null){
int arrys=arryS.length();
char c;
String x=null;
for(int i=0;i<arrys;i++){
c=arryS.charAt(i);
x=String.valueOf(c);
if(!"".equals(x.trim())){
if(map!=null&&map.containsKey(x))
{
map.put(x, map.get(x)+1 );
}else
{
map.put(x, 1);
}
}
}//得到字符的总数放入map
Set<String> set =map.keySet();
TreeSet<Integer> tset=new TreeSet<Integer>(Collections.reverseOrder());
Iterator<String> it=set.iterator();
while(it.hasNext())
{
tset.add(map.get(it.next())); //将map中的value放入TreeSet降序,
}
Integer i=(Integer)tset.first(); //得到第一个value,取出map,value中最大的值
Iterator<String> it2=set.iterator();
String str=null;
while(it2.hasNext())
{ //再跟map中的value比较,得到key,key就是所求的出现最多的值
str =it2.next();
if(map.get(str).equals(i)){
System.out.println("出现最多的字符 :"+str+", 共出现了" +i+ "次");
}
}
}
}
}
/*输出结果:
* 出现最多的字符 :d, 共出现了7次
出现最多的字符 :黄, 共出现了7次*/