使用哈希图时,文本文件中的内容会重新排列[重复]
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);
【讨论】:
以上是关于使用哈希图时,文本文件中的内容会重新排列[重复]的主要内容,如果未能解决你的问题,请参考以下文章