您的位置:首页 > 其它

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

2015-02-27 17:29 120 查看
20150227:

文件内容如下:

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


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

public static void main(String[] args) {
//read
File datas = new File("src\\test\\test\\records.txt");
BufferedReader reader =null;
//sort list
List<Map<String,String>> sorted = new ArrayList<Map<String,String>>();
try {
reader = new BufferedReader(new FileReader(datas));
String tempLine = null;
tempLine = reader.readLine();
while (tempLine!=null) {
String[] recs = tempLine.split(",");
Map<String,String> map = new HashMap<String,String>();
map.put("name", recs[0]);
map.put("record", recs[1]);
//comparing... and save
if (sorted!=null&&sorted.size()>0) {
//从大到小进行比较
int len = sorted.size();
for (int i = 0 ; i < len ; i++) {
System.out.println();
Map<String,String> tmp_c = sorted.get(i);
int bnum = compare(map.get("record"),tmp_c.get("record"));
if ( bnum > 0 || bnum == 0) {
//如果当前读取的值大于或等于序列为i的值 则将该值放到序列i上
sorted.add(i, map);
break;
} else if (i == (len-1)) {
//当当前比较到最后一个已存值时,将该数据直接增加到排序列表 最后
sorted.add(map);
}
}
} else {
//当列表为空时 直接增加数据
sorted.add(map);
}
//read next line
tempLine = reader.readLine();
}
} catch (Exception e) {
e.printStackTrace();
try {
reader.close();
} catch (IOException io) {
}
return ;
}
//print
for (Map<String,String> m:sorted) {
System.out.println(m.get("name")+ "," + m.get("record"));
}
}

private static int compare(String param1, String param2) {
//比较传入值的数值大小,返回参数1对应数值 减去 参数2对应数值的值
return Integer.parseInt(param1) - Integer.parseInt(param2);
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐