从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三峰,48 2,李思明,35 3,张三峰,36 4,王小五,40 5,张三峰,58 6,李思明,30 7,赵云龙,67 8,田和平,24
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三峰,48 2,李思明,35 3,张三峰,36 4,王小五,40 5,张三峰,58 6,李思明,30 7,赵云龙,67 8,田和平,24
参考答案和解析
package com.huawei.interview; 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 GetNameTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //InputStream ips = GetNameTest.class.getResourceAsStream('/com/huawei/interview/info.txt '); //用上一行注释的代码和下一行的代码都可以,因为info.txt与GetNameTest类在 同一包下面,所以,可以用下面的相对路径形式 Map results = new HashMap(); InputStream ips = GetNameTest.class.getResourceAsStream('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) { // TODO Auto-generated catch block e.printStackTrace(); } } static class User { public String name; public Integer value; public User(String name,Integer value) { this.name = name; this.value = value; } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub //下面的代码没有执行,说明往treeset中增加数据时,不会使用到equals方 法。 boolean result = super.equals(obj); System.out.println(result); return result; } } private static void sortResults(Map results) { // TODO Auto-generated method stub TreeSet sortedResults = new TreeSet( new Comparator(){ public int compare(Object o1, Object o2) { // TODO Auto-generated method stub User user1 = (User)o1; User user2 = (User)o2; /*如果compareTo返回结果0,则认为两个对象相等,新的对象不 会增加到集合中去 * 所以,不能直接用下面的代码,否则,那些个数相同的其他姓 名就打印不出来。 * */ //return user1.value-user2.value; //return user1.value if(user1.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); } 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); } } 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); } } } }
相关考题:
假设职员表已在当前工作区打开,其当前记录的“姓名”字段值为“张三”(字符型,宽度为6)。在命令窗口输入并执行如下命令:姓名=姓名=“您好”?姓名那么主窗口中将显示A)张三 B)张三 您好 C)张三您好 D)出错
假设职员表已在当前工作区打开,其当前记录的“姓名”字段值为“张三”(字符型,宽度为6)。在命令窗口输入并执行如下命令: 姓名=姓名-"您好" ?姓名 那么主窗口中将显示______。A.张三B.张三 您好C.张三您好D.出错
假设某数据库表中有一个姓名字段,查找姓名为“张三”或“李四”的记录的准则是( )。A.Not“张三,李四”B.In(“张三,李四”)C.Left([姓名]=“张三,李四”D.Len([姓名])=“张三”,“李四”
气相色谱仪在工作过程中发生的各种故障往往在色谱图上表现出来,如果系统有泄漏,则可能出现选项()的现象。 A、基线漂移、基线噪声、基线出现尖峰、峰畸变B、基线不调零、保留时间不重复、峰面积不重复、不出峰C、基线漂移、基线噪声、基线出现尖峰、不出峰D、峰畸变、保留时间不重复、峰面积不重复、不出峰
修改操作的语句update students set sname=’张三’,该代码执行后的结果是:________。 A.只把姓名叫张三的记录进行更新B.只把字段名为sname改为’张三’C.表中的所有人姓名都更新为张三D.更新语句不完整,不能执行
下列SELECT语句正确的是______。A.SELECT*FROM'学生表'WHERE姓名=张三B.SELECT*FROM'学生表'WHERE姓名=张三C.SELECT*FROM学生表WHERE姓名=张三D.SELECT*FROM学生表WHERE姓名=张三
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序:1,张三,282,李四,353,张三,284,王五,355,张三,286,李四,357,赵六,288,田七,35程序代码如下(答题要博得用人单位的喜欢,包名用该公司,面试前就提前查好该公司的网址,如果查不到,现场问也是可以的。还要加上实现思路的注释):
如果要在已创建的“学生信息”查询中查找姓名中含有“峰”字,并且姓“李”,则应该在“姓名”字段下方的准则框中输入如下的查询条件( )。A.Like 峰 and Like 李*B.Like *峰* and Like 李C.Like *峰* and Like 李*D.Like *峰 and Like李
使用一条SQL语句找到重复的值及重复的次数:有一数据表ZD_ks,其中有字段BM,MC,。。。,请查询出在ZD_ks中BM有重复的值及重复的次数,没有的不要列出。如下表:BM DUPCOUNT001 3002 2
假设某数据库表中有一个姓名字段,查找姓名张三或李四的记录的准则是______。A.III("张三","李四")B.Like"张三"AndLike"李四"C.Like("张三","李四")D.”张三"And"李四"
如下字符串:01#张三#20*02#李四#18*03#王五#22*04#赵六#20*05#田七#21分割出每个人的信息,样式如下:01 张三 2002 李四 18…..创建Student类,属性:学号 姓名 年龄(1)将这些Student对象放进数组中(2)查询里面有没有叫田七的学生如果存在则打印学生的具体信息(封装成方法,键盘输入姓名)(3)计算所有学生的平均年龄,最大年龄,最小年龄(4)如果存在名字叫张三的将名字改为张兵
某公司招聘时有张三、李四、王五、赵六、钱七等5人入围。从学历看,有2人为硕士、3人为博士;从性别看,有3人为男性、2人为女性。已知,张三、王五性别相同,而赵六、钱七性别不同;李四与钱七的学历相同,但王五和赵六的学历不同。最后,只有一位女硕士应聘成功。由此可以推出,应聘成功者为:A.张三B.李四C.王五D.赵六
主机遥控系统重复起动回路的基本功能是() (1)多次重复起动 (2)中断起动 (3)起动次数或计时记忆 (4)终止起动 (5)取消慢转起动 (6)重起动A、(1)(3)(4)(6)B、(2)(3)(5)(6)C、(1)(2)(3)(4)D、(2)(4)(5)(6)
从对称性的角度分析下列命题中划有横线的关系各属何种关系? 1、甲概念包含于乙概念 2、甲命题等值于乙命题 3、甲队战胜乙队 4、李明帮助过赵红 5、田路和王洲同岁。 6、甲判断和乙判断是矛盾的。 7、张三欺骗李四。 8、“A爱慕B”。
张三和李四为夫妻,2014年5月,张三和李四共有的房屋被某拆迁单位实施拆迁,并进行了安置房的产权调换补偿。2015年6月,张三和李四离婚,离婚协议约定拆迁安置房产权归其儿子张小五所有。则下列关于拆迁安置房登记流程说法正确的是()A、张三和李四可代张小五申请办理拆迁保留产权登记手续,直接登记至张小五名下B、张三和李四可代张小五申请不动产赠与手续,直接登记至张小五名下C、张三和李四可代张小五申请拆迁保留产权及不动产赠与手续,将不动产权登记至张小五名下D、张三和李四需先办理拆迁保留产权手续,不动产权登记至张三和李四名下后,再通过赠与手续,将不动产权登记至张小五名下
单选题有九个人一起去游玩,这九个人中有三个成年妇女张、王、李,两个成年男人赵、郑和四个孩子帆、林、波、峰。在游玩时,总共有九个座位,但这九个座位分别放在娱乐场的三个不同的位置,三个座位一组互相毗邻。为了保证游玩的质量,九个人必须根据以下条件分为三组。 (1)性别相同的成年人不能在一组; (2)帆不能在张那一组; (3)林必须同王或赵同组,或者同时与王、赵同组。如果张和赵是第一组的两个成员,那么谁将分别在第二组和第三组()A王、李、帆;郑、波,峰B王、帆、峰;李、郑、林C王、林、波;李、帆、峰D李、郑、帆;王、波、峰E帆、林、波;王、郑、峰
单选题下面语句中,能够实现将:姓名=张三,年龄=21,地址=广州的数据行正确插入已知表S1中的是:()。AInsert into S1(张三,21,广州) values(姓名,年龄,地址)BInsert into S1(姓名,年龄,地址) values(张三,21,广州)CInsert into S1(张三,21,广州) values(姓名,21,广州)DInsert into S1 values(姓名=张三,年龄=21,地址=广州)
单选题设数据库有如下表:作者表(作者号,姓名,电话)投稿表(作者号,投稿日期,文章名,审稿结果)删除作者名为“张三”的投稿记录,正确的SQL语句是( )。ADELETE FROM投稿表WHERE姓名=‘张三’BDELETE FROM作者表WHERE姓名=‘张三’CDELETE FROM投稿表;DDELETE FROM投稿表JOIN作者表ON投稿表.作者号=作者表.作者号;