【问题标题】:How to go through hashmap and compare key or value to scanner input?如何通过 hashmap 并将键或值与扫描仪输入进行比较?
【发布时间】:2021-02-28 21:09:08
【问题描述】:

所以我想制作这个小程序来训练语言。我制作了一个 Hashmap,其中包含西班牙语单词作为键,英语等价词作为值。例如:

HashMap<String, String> words = new HashMap<String, String>();
        words.put("dentista", "dentist");
        words.put("abogado", "lawyer");
        words.put("maestro", "teacher");

现在我想与这些人一起训练,首先询问我选择哪种语言被问到。如果我说选择英语(=值),我希望我的程序向我显示每个键并等待我通过扫描仪和比较我的反应和它的关键。 HashMaps 可以实现这样的事情吗? 我从这个开始:

 Scanner scan = new Scanner(System.in);
 Collection<String> esp = words.keySet();
        for (String string : esp) {
            System.out.println(string);
        }
        
        Collection<String> eng = words.values();
        for (String string : eng ) {
            System.out.println(string);
        }

有人有提示吗?我已经在这工作了 4 小时,调试只是意味着我删除了我所拥有的每一点进展。

【问题讨论】:

    标签: java hashmap java.util.scanner


    【解决方案1】:

    Java 的 hashmap 不是为此而设计的。你不能问它:“嘿,给定这个值,给我找到关联的键”。您所能做的就是迭代它。如果你开始有几万个条目,这是非常低效的。

    最好的办法是只制作 2 个哈希图;一张将英语映射为西班牙语,一张将西班牙语映射为英语。您可以使用一种简单的方法推导出第二个,该方法在您的西班牙语到英语词典中循环一次,并从中创建一个英语到西班牙语词典。或者,添加 guava 依赖项并使用 guava 的 BiMap 这是一个可以双向的映射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多