问题描述
/*统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。例如:c:1,e:1,d:2,f:2,b:3,a:4*/importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;publicclassTestimplementsComparator<Entry<String,Long>>{publicstaticvoidmain(String[]args){Stringstr="abadcdffbaeba";Map<String,Long>result=newHashMap<String,Long>();String[]s=str.split("");for(inti=0;i<s.length;i++){if("".equals(s[i])){continue;}if(result.get(s[i])!=null){result.put(s[i],result.get(s[i])+1);}else{result.put(s[i],1l);}}Listlist=newArrayList(result.entrySet());Collections.sort(list,newTest());for(inti=0;i<list.size();i++){System.out.println(list.get(i));}}//问o1和o2是什么意思,是怎么传进来的?publicintcompare(Entry<String,Long>o1,Entry<String,Long>o2){longi=o1.getValue()-o2.getValue();if(i==0l){//o2.getValue()返回的是什么?returno2.getValue().compareTo(o1.getValue())==0?1:0;}returni>0l?1:0;}}
解决方案
解决方案二:
这不是Map.Entry的问题。这是比较器的问题。搜一下比较器就明白了。
解决方案三:
解决方案四:
o1和o2表示map中两个Entry。o2.getValue()表示o2的值,就是result.get(o2.getKey())
解决方案五:
这个查查文档哦。