文件中有姓名,分数两列,读取并按分数排序输出

20150227:

文件内容如下:

张三,77
李四,89
王二,69
白龙,59
和尚,61
八戒,90
悟空,91
唐僧,0

(最不需要思考的)代码如下:

 1 public static void main(String[] args) {
 2         //read
 3         File datas = new File("src\test\test\records.txt");
 4         BufferedReader reader =null;
 5         //sort list 
 6         List<Map<String,String>> sorted = new ArrayList<Map<String,String>>();
 7         try {
 8             reader = new BufferedReader(new FileReader(datas));
 9             String tempLine = null;
10             tempLine = reader.readLine();
11             while (tempLine!=null) {
12                 String[] recs = tempLine.split(",");
13                 Map<String,String> map = new HashMap<String,String>();
14                 map.put("name", recs[0]);
15                 map.put("record", recs[1]);
16                 //comparing... and save
17                 if (sorted!=null&&sorted.size()>0) {
18                     //从大到小进行比较
19                     int len = sorted.size();
20                     for (int i = 0 ; i < len ; i++) {
21                         System.out.println();
22                         Map<String,String> tmp_c = sorted.get(i);
23                         int bnum = compare(map.get("record"),tmp_c.get("record"));
24                         if ( bnum > 0 || bnum == 0) {
25                             //如果当前读取的值大于或等于序列为i的值 则将该值放到序列i上
26                             sorted.add(i, map);
27                             break;
28                         } else if (i == (len-1)) {
29                             //当当前比较到最后一个已存值时,将该数据直接增加到排序列表 最后
30                             sorted.add(map);
31                         }
32                     }
33                 } else {
34                     //当列表为空时 直接增加数据
35                     sorted.add(map);
36                 }
37                 //read next line
38                 tempLine = reader.readLine();
39             }
40         } catch (Exception e) {
41             e.printStackTrace();
42             try {
43                 reader.close();
44             } catch (IOException io) {
45             }
46             return ;
47         }
48         //print
49         for (Map<String,String> m:sorted) {
50             System.out.println(m.get("name")+ "," + m.get("record"));
51         }
52     }
53 
54     private static int compare(String param1, String param2) {
55         //比较传入值的数值大小,返回参数1对应数值 减去 参数2对应数值的值
56         return Integer.parseInt(param1) - Integer.parseInt(param2);
57     }
View Code
原文地址:https://www.cnblogs.com/justbeginning/p/4303824.html