使用Java中的LinkedHashMap按顺序输出数字

时间:2015-07-25 06:04:57

标签: java dictionary hashmap linkedhashmap

我是java的新手,我正在处理一个问题,我需要按照输入的顺序从HashMap输出元素。我了解HashMap无法做到这一点,LinkedHashMap专门用于维护此顺序。我在我的问题中实现了LinkedHashMap,但输出没有跟随输入序列。请帮助我。请找到我的问题和下面的代码。

用户输入名称数量n和人名(将姓名添加到名称为key的地图中,并将他/她所属的团队编号添加为{{ 1}})。我应该为用户输入的名称打印相应的value

  

输入:4

     

极光

     

飞象

     

爱丽儿

     

班比

输出:应为values - 来自[1,3,1,2]

的输出

但我从以下程序获得的输出是list

我试图弄清楚我的错误是什么,但徒劳无功。对此有所帮助。感谢。

[1,1,2,3]

1 个答案:

答案 0 :(得分:0)

您希望这些数字按照您查找的顺序显示。这当然与它们的存储顺序无关。 e.g。

例如,如果您要求Aurora Dumbo AliceBolt,则您要扫描整个集合,以便将这些字词添加到集合中以查找匹配项。虽然这是低效的,但如果这是您所期望的,它可以起作用。

但是,您似乎希望它们符合您输入单词的顺序。实际上,这可以更简单,更高效,因为您可以使用Map.get(String)

您可以使用此

替换两个循环
// add the lookup value in the order the words are entered
// not the order they appear in the original map.
for(int i = 0; i < n; i++) {
    String name = in.next();
    l.add(map.get(name));
}