Map.Entry求解!

battle888 2013-12-05 02:39:06
/*统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。
例如:c : 1,e : 1,d : 2,f : 2,b : 3,a : 4*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class Test implements Comparator<Entry<String,Long>>{
public static void main(String[] args) {
String str = "abadcdffbaeba";
Map<String,Long> result = new HashMap<String,Long>();
String[] s = str.split("");
for(int i=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);
}
}

List list = new ArrayList(result.entrySet());
Collections.sort(list, new Test());
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}

}
//问o1和o2是什么意思,是怎么传进来的?
public int compare(Entry<String, Long> o1, Entry<String, Long> o2) {
long i = o1.getValue() - o2.getValue();
if(i==0l) {
//o2.getValue()返回的是什么?
return o2.getValue().compareTo(o1.getValue())==0 ? 1 :0;
}
return i > 0l ? 1 : 0;
}
}
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony4geek 2013-12-05
  • 打赏
  • 举报
回复
这个查查文档哦。
ghostkngiht 2013-12-05
  • 打赏
  • 举报
回复
o1和o2表示map中两个Entry。 o2.getValue()表示o2的值,就是result.get(o2.getKey())
小陈杰帝 2013-12-05
  • 打赏
  • 举报
回复
rockets311 2013-12-05
  • 打赏
  • 举报
回复
这不是Map.Entry的问题。 这是比较器的问题。 搜一下比较器就明白了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧