使用hashmap时,文本文件中的内容会重新排列

时间:2017-11-14 22:03:21

标签: java hashmap java.util.scanner

我必须使用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

出于某种原因,在考虑上面的例子时,它正在混合一些输出。任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

尝试:

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