从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序:
1,张三,28
2,李四,35
3,张三,28
4,王五,35
5,张三,28
6,李四,35
7,赵六,28
8,田七,35
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;
public class MapValueSort {
public static void main(String[] args) throws IOException {
File f = new File("E:"+File.separator+"java"+File.separator+"E.txt");
InputStream ips = new FileInputStream(f);
Scanner scan = new Scanner(ips,"GBK");
TreeMap<String,Integer> map = new TreeMap<String,Integer>();
while(scan.hasNextLine()){
String s = scan.nextLine().split(",")[1];
if(map.containsKey(s)){
int b = map.get(s)+1;
map.put(s, b);
}else{
map.put(s, 1);
}
}
scan.close();
List<Map.Entry<String, Integer>> infoIds =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
System.out.println("===========================");
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
return -o1.getValue().toString().compareTo(o2.getValue().toString());
}
});
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
}
}