在HashMap中输入2位数字

时间:2016-03-03 09:39:33

标签: java arrays parsing hashmap long-integer

我试图在java中编写这段代码来解析输入行并将数字和字符串保存到HashMap中:

for(int i=0; i<n; i++){

        in = input.nextLine();
        tokens = in.split(delims);

        Long fi = Long.parseLong(tokens[0]);
        String si = tokens[1];

        songs.put(fi, si);

    }

现在可以输入这样的输入:

  

1个

     

2两个

     

3三

     

4四

但是当我输入2位数字时,例如:

  

30 one

     

30二

     

15三

     

25四

println HashMap的结果显示:

  

4

     

2

     

3

我是使用HashMaps的新手,我的代码错了吗? 我使用split方法来解析输入字符串并将其保存在字符串数组中,它似乎工作正常,所以我认为问题应该是关于HashMap的问题

2 个答案:

答案 0 :(得分:1)

执行put时,它会替换之前的值,因此如果您尝试为同一个键添加两个值,则会获得最后一个值。

您可以使用MultiMap或Map<Long, List<String>>,其中字符串列表包含该键的所有值。

答案 1 :(得分:0)

public class HashMapAnswer {
    public static void main(String[] args) {
        HashMap<Long, String> songs = new HashMap<Long, String>();
        String in;
        Scanner input = new Scanner(System.in);
        for (int i = 0; i < 2; i++) {

            in = input.nextLine();
            String tokens[] = in.split(",");

            Long fi = Long.parseLong(tokens[0]);
            String si = tokens[1];

            songs.put(fi, si);
        }
        for (Map.Entry m : songs.entrySet()) {
            System.out.println(m.getKey() + " " + m.getValue());
        }
    }
}

Sample screenshots