问题表述
我想将下方图片按照合计由大到小进行排序,并将结果写入新的txt文件中
结果得到了如下文件
运行结果及报错内容
运行结果正如上述截图,少了部分数据且排序的结果也不正确,在我的印象中HashMap会对key进行排序,因此选用HashMap集合发现结果不对后也进行了调试,排序的问题暂且不论,数据变少是在IO流读入新的一行数据后,再添加到HashMap的过程中有时会将之前添加的数据顶替掉,我并没有发现原因
问题相关代码,请勿粘贴截图
import java.io.*;
import java.util.HashMap;
/**
* @author Nidhogg
*/
public class TheThirdInFirstTask {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>(16);
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader("e:/奖牌金榜.txt"));
bw = new BufferedWriter(new FileWriter("e:/奖牌金榜(排序).txt"));
String str;
//处理表头
str = br.readLine();
bw.write(str);
bw.newLine();
//处理数据
while((str = br.readLine()) != null) {
//将所读取到的哪行数据按","进行分隔
String[] arr = str.split(",",0);
String details = arr[0]+","+arr[1]+","+arr[2]+","+arr[3];
String total = arr[4];
map.put(total,details);
}
for (String key : map.keySet()) {
String value = map.get(key);
str = value+","+key;
bw.write(str);
bw.newLine();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (br != null) {
br.close();
}
if (bw != null) {
bw.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
我想要得到的帮助
请告诉我出现这种结果的原因以及我该如何改正