java - 尝试将每个输入行分成组并存储在 HashMap 中

标签 java

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++;
}

我试图读取输入的每一行并根据空格将其拆分,然后将每个元素分别分配给相同的哈希键。

Ex 输入

john joe bob

james

henry george

应该像这样进入 HashMap

1: john

1: joe

1: bob

2: james

3: henry

3: george

当我完成输入后,退出循环的最佳方法是什么?

最佳答案

映射是一种键/值集合,其中每个键都链接到一个值。在您的情况下,您似乎希望每个键有多个值 - 一个选项如下所示,其中每个键(行号)映射到名称列表:

Map<Integer, List<String>> names = ...;

要填充 map ,您需要为每一行创建一个列表,例如:

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 - 尝试将每个输入行分成组并存储在 HashMap 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34697788/

相关文章:

java - 如何使用 StringUtils 获得大驼峰命名法?

java - 将 JTextField 转换为 int 数组(有异常(exception))

java - 单击 JTabbedPane 上的选项卡时,组件不会立即出现

java - 如何使用 spring boot 正确地从 map 中引用不同的域模型?

Java 错误 - 缺少方法体或声明抽象

java - 比较通过 id 相等的对象的属性

java - ObjectInputStream.readObject() 给出 EOFException

java - 如何查看有多少个以a、b、c、d等开头的单词?

hudson - 如何配置 Hudson 作业以使用特定的 JDK?

java - 使用 Spring 缓存处理 Java 8 Optional