如何读取文本文件内容,并按照对应值倒序输出

文本文件内容如下:

初学者,899
游学者,569
有学者,289
俊才,989
初师,349
学师,439
有道者,259
有智者,669
智者,879
仁师,619
仁者,459
尊者,439
大智尊,269
坛圣,119

做法如下:

public class TestFile{
public static void main(String[] args) throws IOException {
Map<String,Integer> map=new HashMap<String,Integer>();
//读取文件的字节流
FileInputStream fis=new FileInputStream("test.txt");
//转换流
InputStreamReader isr=new InputStreamReader(fis);
//字符流
BufferedReader br=new BufferedReader(isr);
//把读到的字符分别存入到Map中
String str=null;
while((str=br.readLine())!=null) {
String[] arrays=str.split(",");
String key=arrays[0];
Integer value=Integer.parseInt(arrays[1]);
map.put(key, value);
}
//比较Map值,比较结果存入List中(map中value值从小到大)
List<Map.Entry<String, Integer>> list=new LinkedList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String,Integer>>(){
//重写compare方法比较value值
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}

});
//排序后的结果依次存入新Map中
Map<String,Integer> result=new LinkedHashMap<String, Integer>();
for(Entry<String,Integer> newentry:list) {
result.put(newentry.getKey(), newentry.getValue());
}
//遍历LinkedMap,按照需求在控制台打印输出
int i=1;
for(Map.Entry<String, Integer> mapEntry:result.entrySet()) {
if(i>5) {
break;
}
System.out.println(mapEntry.getKey()+","+mapEntry.getValue());
i++;
}

}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值