读取文件,按照文件内容中,名字出现的次数排序输出,关键点在于Map按照value排序,
http://gcq04552015.iteye.com/blog/974580这篇文章有详细的描述.
value排序:
public class StringSort {
public static void main(String[] args) {
SortedMap<String, Integer> sortmapMap=new TreeMap<String, Integer>();
try {
BufferedReader reader=new BufferedReader(new FileReader("d:\\a.txt"));
//FileReader fileReader=new FileReader("d:\\a.txt");
String str=null;
while((str=reader.readLine())!=null){
str=str.split(",")[1];
int value=0;
if(sortmapMap.containsKey(str))
value=sortmapMap.get(str);
sortmapMap.put(str, ++value);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<Map.Entry<String, Integer>> mapList=new ArrayList<Map.Entry<String,Integer>>(sortmapMap.entrySet());
Collections.sort(mapList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry<String, Integer> mapping:mapList){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
}
key排序
//通过ArrayList构造函数把map.entrySet()转换成list
mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
//通过比较器实现比较排序
Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
return mapping1.getKey().compareTo(mapping2.getKey());
}
mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
//通过比较器实现比较排序
Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
return mapping1.getKey().compareTo(mapping2.getKey());
}