static HashMap<Integer, String> names = new HashMap<Integer, String>();
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int i = 0;
while (in.hasNext())
s = in.nextLine();
for (int j = 0; j < s.split(" ").length; j++) {
names.put(i, s.split(" ")[j]);
}
i++;
}
我正在尝试读取输入的每一行,并根据空格对其进行拆分,然后将每个元素分别分配给相同的哈希键。
防爆输入
约翰·乔·鲍勃
詹姆士
亨利·乔治
应该像这样进入哈希表
1:约翰
1:乔
1:鲍勃
2:詹姆斯
3:亨利
3:乔治
另外,当我完成输入后,摆脱循环的最佳方法是什么?
最佳答案
映射是一个键/值集合,其中每个键都精确链接到一个值。在您的情况下,您似乎希望每个键具有多个值-一种选择如下所示,其中每个键(行号)映射到名称列表:
Map<Integer, List<String>> names = ...;
要填充地图,您需要为每行创建一个列表,例如:
public static void main(String[] args) {
int i = 0;
while (in.hasNext()) {
String s = in.nextLine();
names.put(i, Arrays.asList(s.split(" ")));
i++;
}
}
ps:我认为
while
行末尾缺少的括号是一个错字。关于java - 尝试将每条输入线分为几组并存储在哈希图中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34697788/