java - 如何将键和值存储到 hashmap 中并相应地打印出来?

标签 java

目前,我正在从 csv 文件中检索数据并将数据存储到 HashMap 中。但是,当我打印出 HashMap 的内容时,它的顺序与我想象的不同。如何格式化 HashMap ,使其按照 dec -> jan -> feb 的顺序打印?

代码

public static void main(String[] args) throws ParseException {
    //readXLSXFile("C:\\Users\\User\\Desktop\\AllSgStuffdata2.xlsx");
    HashMap<String, Integer> numberOfPost = new HashMap<String, Integer>();
    int febCounter = 0;
    int janCounter = 0;
    int decCounter = 0; 
    String pattern = "MMM";
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);

    try (Reader reader = Files.newBufferedReader(Paths.get("file_path"));
            CSVReader csvReader = new CSVReader(reader);){
        String [] nextRecord;
        while((nextRecord = csvReader.readNext()) != null) {
            //Date date = sdf.parse(nextRecord[2]);
            //System.out.println(date);
            String retrievedate = nextRecord[2];
            Date date = sdf.parse(retrievedate);
            String strDate = sdf.format(date);
            //System.out.println(strDate);

            if(strDate.equals("Dec")) {
                decCounter++;
            }
            else if (strDate.equals("Jan")) {
                janCounter++;
            }
            else if (strDate.equals("Feb")) {
                febCounter++;
            }
        }
        numberOfPost.put("December", decCounter);
        numberOfPost.put("January", janCounter);
        numberOfPost.put("Feburary", febCounter);   
        System.out.println(numberOfPost);
    } catch(IOException | ParseException e) {
        System.out.print("File can't be found");
    }
}

电流输出

{Feburary=365, December=303, January=582}

期望输出

{December=303, January=582, Feburary=365}

最佳答案

您可以使用链接 HashMap 来维护插入顺序

 LinkedHashMap<String, String> lhm = 
                       new LinkedHashMap<String, String>(); 
        lhm.put("one", "1"); 
        lhm.put("two", "2"); 
        lhm.put("four", "3"); 
System.out.println(lhm);

输出->

{一=1,二=2,四=3}

关于java - 如何将键和值存储到 hashmap 中并相应地打印出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60275079/

相关文章:

java - 使用默认构造函数创建对象

java - JDesktopPane 调整大小

java - Jackson 中的自定义 Json 反序列化器仅适用于 Hashmap

java - Hibernate @Any 注解用法

java - 将所有出现的单词替换为另一个单词

java - 为什么我的代码在输入负值时无法执行?

java - MultiKeyMap 获取方法

java - 如何通过在 java 中使用 Runtime.exec() 运行 sqlplus 来捕获 sqlplus 窗口的输出

java - HttpsURLConnection 连接问题

java - HSSFWorkbook - 使用不同值的单独列写入 Excel 数据