打印重复姓名和重复次数
来源:互联网 发布:程序员为什么容易猝死 编辑:程序博客网 时间:2024/06/05 05:26
从下面的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序
info.txt
1,张三,282,李四,353,张三,284,王五,355,张三,286,李四,357,赵六,288,田七,35
结果;
李四:2张三:3
代码实现;
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.TreeSet;public class Test {@SuppressWarnings("rawtypes")public static void main(String[] args) {Map results = new HashMap();InputStream ips = Test.class.getResourceAsStream("info.txt");//InputStream ips = GetNameTest.class.getResourceAsStream("/com/huawei/interview/info.txt");BufferedReader in = new BufferedReader(new InputStreamReader(ips));String line = null;try {while((line=in.readLine())!=null){dealLine(line,results);}sortResults(results);} catch (IOException e) {e.printStackTrace();}}static class User{public String name;public Integer value;public User(String name,Integer value){this.name = name;this.value = value;}public boolean equals(Object obj) {//下面的代码没有执行,说明往treeset中增加数据时,不会使用到equals方法。boolean result = super.equals(obj);System.out.println(result);return result;}}@SuppressWarnings({ "unchecked", "rawtypes" })private static void sortResults(Map results) {TreeSet sortedResults = new TreeSet(new Comparator(){public int compare(Object o1, Object o2) {User user1 = (User)o1;User user2 = (User)o2;/* 如果compareTo返回结果0,则认为两个对象相等,新的对象不会增加到集合中去 * 所以,不能直接用下面的代码,否则,那些个数相同的其他姓名就打印不出来。 * */if(user1.value<user2.value){return -1;}else if(user1.value>user2.value){return 1;}else{return user1.name.compareTo(user2.name);}}});Iterator iterator = results.keySet().iterator();while(iterator.hasNext()){String name = (String)iterator.next();Integer value = (Integer)results.get(name);if(value > 1){sortedResults.add(new User(name,value));}}printResults(sortedResults);}@SuppressWarnings("rawtypes")private static void printResults(TreeSet sortedResults) {Iterator iterator = sortedResults.iterator();while(iterator.hasNext()){User user = (User)iterator.next();System.out.println(user.name + ":" + user.value);}}@SuppressWarnings({ "rawtypes", "unchecked" })public static void dealLine(String line,Map map){if(!"".equals(line.trim())){String [] results = line.split(",");if(results.length == 3){String name = results[1];Integer value = (Integer)map.get(name);if(value == null) value = 0;map.put(name,value + 1);}}}}
阅读全文
0 0
- 打印重复姓名和重复次数
- java并打印出重复的姓名和重复的次数,并按重复次数排序
- 从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序
- java 集合 从类似如下的文本文件中读取出所有的姓名,并打印出重复的 * 姓名和重复的次数,并按重复次数排序:
- 从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数
- 【原创】打印一个string 字符串中重复字符的次数
- 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素并打印
- 面试二 打印集合中重复记录 并显示重复次数
- shell统计重复次数
- 统计数据重复次数
- 菜单选择错误后,下面的打印语句重复打印错误次数
- 打印重复的元素
- java数组元素重复次数及重复次数的最大值
- 如何统计不重复姓名的个数?
- asp:限制重复的次数
- poj3641(KMP求子串重复次数)
- OpenCV傅里叶变换
- 使用python发短信给自己的手机
- TinyXML:一个优秀的C++ XML解析器
- 1.一个简单的存储过程
- vue 动态渲染 html标签解决方案 v-html
- 打印重复姓名和重复次数
- 10.7
- 台湾大学机器学习基石Lecture2
- 扩展欧几里得 与 乘法逆元
- nrpe安装
- Codeforces869B The Eternal Immortality
- new运算符做了什么
- 使用VUE-CLI构建一个项目基本的配置
- Python之dict的妙用