package question7;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.TreeSet;
/*
* 统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。
例如:c : 1,e : 1,d : 2,f : 2,b : 3,a : 4
*/
public class StatisticalCharacterNumbers_1
{
public static void main(String[] args)
{
//为了控制台看着舒服点不用拉滚动条就
//这么短吧。。。
String string = "abacdbdfacfbd";
//用treemap进行次数统计
TreeMap<Character, Integer> map = new TreeMap<Character, Integer>();
//对字符串中的每一个字符进行迭代,
//如果该字符已经存在,则其在map中
//所对应的数值+1,否则添加进去并
//设置为1
char[] chars = string.toCharArray();
for (char c : chars)
{
Integer num = map.get(c);
if(null != num)
++num;
else
num = 1;
map.put(c, num);
}
//对上方统计完成的treemap进行迭代,并将没一个字符以及
//出现次数进行运算,以int的高16位保存字符出现次数,以
//低16保存字符,并将该值添加进treeset中,由其完成自然
//排序
Iterator<Entry<Character, Integer>> iterator = map.entrySet().iterator();
TreeSet<Integer> set = new TreeSet<Integer>();
while(iterator.hasNext())
{
Entry<Character, Integer> element = iterator.next();
System.out.println(element.getKey()+" "+element.getValue());
//输出排序前的字符统计,用来观察是否正确
set.add(element.getValue()<<16 | element.getKey());
}
System.out.println("========================================>");
//输出排序后的统计
for (Integer integer : set)
{
System.out.println((char)(integer & 0xffff) + " " +((integer >> 16)));
}
}
}
利用自然顺序统计字符串中每个字符的出现次数
最新推荐文章于 2022-03-18 15:44:12 发布