文本文件内容如下:
初学者,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++;
}
}
}