算法与编程2

从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序:

1,张三,28

2,李四,35

3,张三,28

4,王五,35

5,张三,28

6,李四,35

7,赵六,28

8,田七,35

 

 

package cn.suanfa;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class Test0222 {

    public static void main(String[] args) throws IOException {
    Reader reader=new FileReader("src/data.txt");
    BufferedReader buffered=new BufferedReader(reader);
    String data=null;
    Map<String, Integer> map=new HashMap<String,Integer>();
    while ((data=buffered.readLine())!=null) {//循环读取每一行
        String[] sa= data.split(","); //id name  age
    if (map.containsKey(sa[1])) {  //集合中已经存在的学生
        map.put(sa[1], map.get(sa[1])+1);
    }else{
        map.put(sa[1], 1);//之前没有这个名字作为key
    }
    }
    //将双列集合数据转移到单列集合
    List<Entry<String, Integer>> list=new ArrayList<Entry<String,Integer>>(map.entrySet());
     Collections.sort(list,new Comparator<Entry<String, Integer>>() {

        @Override
        public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
        
            return o1.getValue().compareTo(o2.getValue());
        }
        
    });
     for (Entry<String, Integer> entry : list) {
        System.out.println(entry.getKey()+"\t"+entry.getValue());
    }
    buffered.close();
    reader.close();
    }
    
}

 

posted @ 2018-07-18 20:32  小哪吒!!  阅读(107)  评论(0编辑  收藏  举报