/*
程序要打印出字符串addbbaacc中每个字母出现的次数。要求打印的结果是{a=3, d=2, b=2, c=2},也就是按每
个字母出现的次序排列,而不是按字母表的顺序排列。
程序中不加比较器打印没问题:{a=3, b=2, c=2, d=2},但此顺序不是想要的。加比较器的话,打印得结果就
有问题:{a=1, d=2, b=2, a=2, c=2},想要的结果是{a=3, d=2, b=2, c=2}。请问该比较器Mycom该如何写?
*/
import java.util.*;
class MapDemo3
{
public static void main(String[] args)
{
Test t=new Test();
t.setStr("addbbaacc");
t.print();
}
}
class Test
{
String str;
public void setStr (String str)
{
this.str=str;
}
public void print ()
{
char[] ch=str.toCharArray();
TreeMap<Character,Integer> hm = new TreeMap<Character,Integer>(new Mycom());//加比较器
for (int x=0;x<ch.length ;x++ )
{
Integer a=hm.get(ch[x]);
if (a==null)
{
hm.put(ch[x],1);
}
else{a=a+1; hm.put(ch[x],a);}
}
System.out.println(hm);
}
}
class Mycom implements Comparator<Character>
{
public int compare (Character s1,Character s2)
{
int a=s1.compareTo(s2);
if (a==0)
{
return 0;
}
else return 1;
}
}
|
|