使用哈希图时,文本文件中的内容会重新排列[重复]

Posted

技术标签:

【中文标题】使用哈希图时,文本文件中的内容会重新排列[重复]【英文标题】:Contents from text file are rearranged when using hashmap [duplicate] 【发布时间】:2018-04-28 00:04:05 【问题描述】:

我必须使用 HashMap 从 txt 文件中打印出前 5 个内容。 这是文本文件中的示例。

A01 网络应用 A02 订婚 A03 嵌入 A04 印象 A05 影响者 A06 提及 A07 微博 A08 有机 A09 到达 A10 社交图谱 A11 用户生成的内容 A12 联盟营销 A13 跳出率 A14 号召性用语 A15 点击率

等等……

这是我目前所拥有的:

 final int assumedLineLength = 16;
       File file = new File("src/hw7p1/Acronyms.txt");
     try 
    Scanner scan = new Scanner(file);
     HashMap<String, String> hashMap = new HashMap<String, String>((int)(file.length() / assumedLineLength) * 2);



    while(scan.hasNextLine()) 
        String[] columns = scan.nextLine().split(" ");
        hashMap.put(columns[0], columns[1]);


    

    for (String key : hashMap.keySet()) 

    System.out.println(key +" " + hashMap.get(key));

 catch (IOException e) 
    e.printStackTrace();


     

这就是我的输出:

 A87 Big
 A88 Data
 A01 Web
 A89 Database
 A02 Engagement
 A03 Embedding
 A04 Impressions
 A05 Influencer
 A06 Mention
 A07 Microblogging
 A08 Organic
 A09 Reach
 A90 Data
 A91 Data
 A92 Relational
 A93 Hybrid
 A94 IDE
 A95 Native
 A96 NFC
 A97 Responsive
 A10 Social
 A98 SDK
 A11 User-generated
 A99 Content

由于某种原因,当它假设查看上面的示例时,它会混合一些输出。任何帮助将不胜感激。谢谢

【问题讨论】:

不保证 HashMap 的顺序。使用LinkedHashMap 可以使用排序方式吗? linkedHashMap.entrySet().stream().sorted().collect(PassInCollector); 或者你可以使用Collections.sort。您还可以将Comparator 对象传入sorted 方法并定义排序依据 【参考方案1】:

我建议使用 LinkedHashMap,因为它保留了输入的顺序

 LinkedHashMap<String, String> hashMap = new LinkedHashMap<String, String>((int)(file.length() / assumedLineLength) * 2);

【讨论】:

【参考方案2】:

试试:

Map<String, String> hashMap = new LinkedHashMap<String, String>(
                    (int) (file.length() / assumedLineLength) * 2);

【讨论】:

以上是关于使用哈希图时,文本文件中的内容会重新排列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

(Kotlin)如何将哈希图输出保存到文件中

在一个线程上删除具有数百万个字符串的大型哈希图会影响另一个线程的性能

将字符串数组转换为哈希图[重复]

如何让我的哈希图按照我想要的顺序打印[重复]

如何将哈希图转换为条目数组[重复]

如何按整数值对哈希图进行排序[重复]