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/

10-14 10:21
查看更多