有关HashMap以及排序的问题

问题表述

我想将下方图片按照合计由大到小进行排序,并将结果写入新的txt文件中

img

结果得到了如下文件

img

运行结果及报错内容

运行结果正如上述截图,少了部分数据且排序的结果也不正确,在我的印象中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();
            }
        }
    }
}

我想要得到的帮助

请告诉我出现这种结果的原因以及我该如何改正

这里不是让你用 循环去遍历到,这里是让你用compareTo ,重写里面的排序规则的