分析一段文字中重复词组,英文版

String text = " aaaaabbbacccdaaaabbbbccccaaa";

Pattern patten = Pattern.compile("[a-zA-Z]+");

// 用Pattern类中的matcher()方法,生成一个匹配器对象,Matcher类是匹配器类

String sbstring = text.toString();

Matcher matcher = patten.matcher(sbstring);

Map tp = new TreeMap();

while (matcher.find()) {

// 用Matcher类中的find()方法,查找与模式匹配的下一个子序列

String word = matcher.group();

// 用Matcher类中的group()方法, 返回匹配的子序列

if (tp.containsKey(word)) {

// 统计每个单词出现的次数

Integer wordfrequency = tp.get(word);

tp.put(word, wordfrequency + 1);

} else {

tp.put(word, 1);

}

}

/*

* 将treemap中的键值对的set视图存入ArrayList中,其中的类型必须是Map.Entry,

* 因为TreeMap中的entrySet()方法的返回类型就是Map.Entry类型,其实Map.Entry就是个接口。

* 将treemap存入ArrayList的目的就是用Collections类中的sort()方法进行排序,

* 其中的sort(Listlist,Comparator)是按照指定的比较器进行排序

*/

List> list = new ArrayList>(tp.entrySet());

/*

* 重写Comparator比较器,目的是让TreeMap按照value进行降序排列,这里的重写比较器用的是匿名类,

* 先创建实现Comparator接口的类,并重写其中的compare方法,并不是接口实例化了。

*/

Comparator> comparator = new Comparator>() {

// 如果是实现升序就是return(param1.getValue().compareTo(param2.getValue());

public int compare(Map.Entry param1, Map.Entry param2) {

return (param2.getValue().compareTo(param1.getValue()));

}

};

// 按照指定的比较器,对list列表进行升序或者降序排序

Collections.sort(list, comparator);

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i).getKey()+list.get(i).getValue());

}

你可能感兴趣的:(c#,开发语言)