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 }