最近看到一个编程题,是对String数组里的字符串出现的次数进行统计并进行排序。具体的代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class Test {
public static void main(String[] args){
Map<String,Integer> map=new HashMap<String,Integer>();
String []s={"a","b","c","d","a","a","d"};
for(int i=0;i<s.length;i++){
if(map.containsKey(s[i])){
int number=map.get(s[i]);
map.put(s[i], number+1);
}
else{
map.put(s[i], 1);
}
}
Iterator iterator=map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry entry=(Map.Entry)iterator.next();
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
List<Map.Entry<String,Integer>> ios=new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(ios,new Comparator<Map.Entry<String,Integer>>(){
public int compare(Map.Entry<String, Integer> a,Map.Entry<String,Integer> b){
return b.getValue()-a.getValue();
}
});
System.out.println("排序后:");
for(int i=0;i<ios.size();i++){
System.out.println(ios.get(i).getKey()+"\t"+ios.get(i).getValue());
}
}
}
最后输出的结果如下图: