我试图在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的问题
答案 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());
}
}
}