java编程 写一段程序统计一段字符串中每一个单词的出现次数 并按照次数的倒序输出

例如这段字符串是"adf adf adf ad ad f”
输入结果为
adf 3
ad 2
f 1

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 MapSort {
public static void main(String[] args) {
String str = "adf adf ad adf adf ad ad f ad ad";
String[] items = str.split(" ");
Map<String, Integer> map = new HashMap<String, Integer>();
for (String s : items) {
if (map.containsKey(s))
map.put(s, map.get(s) + 1);
else {
map.put(s, 1);
}
}
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>();
for (Entry<String, Integer> entry : map.entrySet()) {
list.add(entry);
}
Collections.sort(list, new EntryComparator());

for (Entry<String, Integer> obj : list) {
System.out.println(obj.getKey() + "\t" + obj.getValue());
}
}
}

class EntryComparator implements Comparator<Entry<String, Integer>> {
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o1.getValue() > o2.getValue() ? 0 : 1;
}
}

参数你可以自己修改!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-22
单词从哪来?用户输入?追问

可以,也可以是我列举的那一条

追答

这个...貌似很简单嘛

追问

再简单我也不会写……

追答

你的题意不是很清楚嘛,意思是编写一个方法,将你传入的字符串的某些单词在字符串的个数排序后返回
所以 入参:String str,出参:List
这样理解对吗?

追问

具体怎么写……

追答

public static LinkedHashMap countSort(String content,List words){
String str = content;
HashMap results = new HashMap();
for(String s : words){
results.put(s, 0);
while(str.contains(s)){
results.put(s, results.get(s) + 1);
str = str.replaceFirst(s, "");
}
}
List list = new LinkedList( results.entrySet());
Collections.sort(list,new Comparator() {
public int compare(Object o1, Object o2) {
Entry e1 = (Entry) o1;
Entry e2 = (Entry) o2;
return e2.getValue() .compareTo( e1.getValue());
}
});
LinkedHashMap sortMap = new LinkedHashMap();
for(int i = 0;i entry = (Entry) list.get(i);
sortMap.put(entry.getKey(), entry.getValue());
System.out.println(entry.getKey() + " : " + entry.getValue());
}
return sortMap;
}

相似回答