String text = ” aaaaabbbacccdaaaabbbbccccaaa“;
Pattern patten = Pattern.compile(“[a-zA-Z]+”);
// 用Pattern类中的matcher()方法,生成一个匹配器对象,Matcher类是匹配器类
String sbstring = text.toString();
Matcher matcher = patten.matcher(sbstring);
Map<String, Integer> tp = new TreeMap<String, Integer>();
// 用Matcher类中的find()方法,查找与模式匹配的下一个子序列
String word = matcher.group();
// 用Matcher类中的group()方法, 返回匹配的子序列
Integer wordfrequency = tp.get(word);
tp.put(word, wordfrequency + 1);
} else {
}
}
/*
* 将treemap中的键值对的set视图存入ArrayList中,其中的类型必须是Map.Entry,
* 因为TreeMap中的entrySet()方法的返回类型就是Map.Entry类型,其实Map.Entry就是个接口。
* 将treemap存入ArrayList的目的就是用Collections类中的sort()方法进行排序,
* 其中的sort(List<T>list,Comparator)是按照指定的比较器进行排序
*/
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(tp.entrySet());
/*
* 重写Comparator比较器,目的是让TreeMap按照value进行降序排列,这里的重写比较器用的是匿名类,
* 先创建实现Comparator接口的类,并重写其中的compare方法,并不是接口实例化了。
*/
Comparator<Map.Entry<String, Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() {
// 如果是实现升序就是return(param1.getValue().compareTo(param2.getValue());
public int compare(Map.Entry<String, Integer> param1, Map.Entry<String, Integer> param2) {
return (param2.getValue().compareTo(param1.getValue()));
}
};
Collections.sort(list, comparator);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getKey()+list.get(i).getValue());
}
原文地址:https://blog.csdn.net/zhuixunhebe1/article/details/134744577
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_23608.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!