2019-8-31 [Java] 面试题:根据数据大小 进行排序展示

发布时间:2026/7/28 17:43:30

2019-8-31 [Java] 面试题:根据数据大小 进行排序展示 文章目录0.特别鸣谢1.需求2.分析3.实现代码4.比较器5.效果0.特别鸣谢本代码由远翔同学提供1.需求根据使用量将下列数据进行排序 然后按照使用量的高低进行 数据展示读取以下文档按照大小排序1G1024M1024K1024B396.9 K /user/007 593.5 K /user/12_hl 0 /user/1LB 0 /user/96256 701.3 M /user/Amanda 611.3 M /user/ChenQingkang 712.6 M /user/ChenQingkang12 943.0 K /user/DAIhe 9.8 M /user/DAIhe199713 0 /user/Enning 47.9 M /user/Kung15 5.0 G /user/LT 105 /user/LZY 611.3 M /user/LiuChengcheng12 76.4 M /user/Ruler13 420.6 K /user/Rulue13 7.0 K /user/TZM11 673.7 M /user/WangYun12 0 /user/XXXXX 610.6 M /user/YC 12.2 M /user/YuanShiXiong13 31.2 M /user/anonymous 230 /user/avro 2.8 G /user/bailina13 105.5 M /user/baoyu13 1.3 G /user/begin 618.7 M /user/caoenning15 673.5 M /user/caoguangzhou13 730.6 M /user/caohuyue13 613 /user/caomingyang 4.5 G /user/caomingyang12 740.4 M /user/caowenhao13 0 /user/caozhuang 996.1 M /user/caozhuang12 610.6 M /user/changjinfang15 0 /user/chaoran2 4.7 G /user/chenbojie09 9.7 M /user/chengshaoqi10 1.4 G /user/chengzhen11 610.6 M /user/chenjianfei 623.7 M /user/chenjianfei13 3.6 M /user/chenjinbiao 1.6 K /user/chenjinbiao10 611.3 M /user/chenpeng15 195 /user/chenqingakng12 3.5 G /user/chenqingkang12 3.5 G /user/chenshengjian13 412 /user/chentao 611.3 M /user/chentao15 3.1 G /user/chenteng092.分析抽取数据 -- 首先将数据对于大小GMK进行分组 -- 分别进行大小对比排序 -- java实现3.实现代码本代码选用的文档地址C:/Users/My/Desktop/test.txt建议将自己的文档改为.txt结尾这样不会报错修改此地址即可packageproject_TopN;importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;publicclasstopN2{publicstaticvoidmain(String[]args)throws IOException{BufferedReader readfilenewBufferedReader(newFileReader(C:/Users/My/Desktop/test.txt));//Key键表示用户姓名 ,Value值表示用户存储的大小MapString,DoublegMapnewHashMap();//存储用量单位为G的用户信息MapString,DoublemMapnewHashMap();//存储用量单位为M的用户信息MapString,DoublekMapnewHashMap();//存储用量单位为K的用户信息MapString,IntegerzMapnewHashMap();//存储用量为0的用户信息StringBuffer sbnewStringBuffer();String textnull;//readline()读取文件中的每一个文本行while((textreadfile.readLine())!null){// 从文件中读出来字符串//indexOf()获取指定参数的位置信息int counttext.indexOf(/);//为了确定用户名先找到第一个/的位置索引//substring()获取字符串中一个或多个子字符串String ktext.substring((count6));//将第一个/的位置向后推6位读取到的字符串为用户名kString v1text.substring(0,count-1);//从第0位读到第一个/位置的前一位读取到的字符串为用户的数据大小v1String vv1.replace( ,);//去除v1中的空格得到v//length()获取长度int lv.length();//将每个v的长度记为l/* * 通过用量的最后一个字符判断单位准备分别存储 * 提取数据大小字符串的数字部分去除单位 * 将字符串转化为double类型的数据以便后续排序比较 * 分别存储数据此时数据不带单位但是已经进行了分组 */if(G.equals(v.substring(l-1))){String vvv.substring(0,v.length()-1);//提取数据大小字符串的数字部分去除单位double d;dDouble.parseDouble(vv);//将字符串转化为double类型的数据gMap.put(k,d);//分别存储数据此时数据不带单位}elseif(M.equals(v.substring(l-1))){String vvv.substring(0,v.length()-1);double d;dDouble.parseDouble(vv);mMap.put(k,d);}elseif(K.equals(v.substring(l-1))){String vvv.substring(0,v.length()-1);double d;dDouble.parseDouble(vv);kMap.put(k,d);}else{zMap.put(k,0);}}readfile.close();//将map集合转化成list集合进行排序//用量单位为G的集合ListMap.EntryString,Doublelist1newArrayListMap.EntryString,Double(gMap.entrySet());Collections.sort(list1,newComparatorMap.EntryString,Double(){//自定义比较器降序排列Overridepublicintcompare(EntryString,Doubleo1,EntryString,Doubleo2){return-o1.getValue().compareTo(o2.getValue());}});//遍历输出for(EntryString,Doublemapping:list1){if(mapping.getKey().length()8){System.out.println(mapping.getKey()\t\t\tmapping.getValue()G);}elseif(mapping.getKey().length()16){System.out.println(mapping.getKey()\t\tmapping.getValue()G);}}//用量单位为M的集合ListMap.EntryString,Doublelist2newArrayListMap.EntryString,Double(mMap.entrySet());Collections.sort(list2,newComparatorMap.EntryString,Double(){//自定义比较器降序排列Overridepublicintcompare(EntryString,Doubleo1,EntryString,Doubleo2){return-o1.getValue().compareTo(o2.getValue());}});//遍历输出for(EntryString,Doublemapping:list2){if(mapping.getKey().length()8){System.out.println(mapping.getKey()\t\t\tmapping.getValue()M);}elseif(mapping.getKey().length()16){System.out.println(mapping.getKey()\t\tmapping.getValue()M);}}//用量单位为K的集合ListMap.EntryString,Doublelist3newArrayListMap.EntryString,Double(mMap.entrySet());Collections.sort(list3,newComparatorMap.EntryString,Double(){//自定义比较器降序排列Overridepublicintcompare(EntryString,Doubleo1,EntryString,Doubleo2){return-o1.getValue().compareTo(o2.getValue());}});//遍历输出for(EntryString,Doublemapping:list3){if(mapping.getKey().length()8){System.out.println(mapping.getKey()\t\t\tmapping.getValue()K);}elseif(mapping.getKey().length()16){System.out.println(mapping.getKey()\t\tmapping.getValue()K);}}//用量单位为0的集合ListMap.EntryString,Integerlist4newArrayListMap.EntryString,Integer(zMap.entrySet());Collections.sort(list4,newComparatorMap.EntryString,Integer(){//自定义比较器降序排列Overridepublicintcompare(EntryString,Integero1,EntryString,Integero2){return-o1.getValue().compareTo(o2.getValue());}});//遍历输出for(EntryString,Integermapping:list4){if(mapping.getKey().length()8){System.out.println(mapping.getKey()\t\t\tmapping.getValue());}elseif(mapping.getKey().length()16){System.out.println(mapping.getKey()\t\tmapping.getValue());}}}}4.比较器//自定义比较器降序排列Overridepublicintcompare(EntryString,Doubleo1,EntryString,Doubleo2){return-o1.getValue().compareTo(o2.getValue());}5.效果

相关新闻