Java 具有多个键并指向单个值的HashMap

Java 具有多个键并指向单个值的HashMap,java,hashmap,Java,Hashmap,有时两个词(或一个词的变体)映射到同一个词 答复。通过将同义词或相关表达式映射到同一字符串来处理此问题,这样您就不需要在响应映射中为同一响应添加多个条目 我需要避免两次添加相同的值。下面的键是由用户输入拆分为单个单词创建的。下面的值是为包含键的用户输入生成的响应 responseMap.put("bug", "Well, you know, all software has some bugs. But our software engineers\n

有时两个词(或一个词的变体)映射到同一个词 答复。通过将同义词或相关表达式映射到同一字符串来处理此问题,这样您就不需要在响应映射中为同一响应添加多个条目

我需要避免两次添加相同的值。下面的键是由用户输入拆分为单个单词创建的。下面的值是为包含键的用户输入生成的响应

responseMap.put("bug", 
                    "Well, you know, all software has some bugs. But our 
software engineers\n" +
                    "are working very hard to fix them. Can you describe the 
problem a bit\n" +
                    "further?");
    responseMap.put("buggy", 
                    "Well, you know, all software has some bugs. But our 
software engineers\n" +
                    "are working very hard to fix them. Can you describe the 
problem a bit\n" +
                    "further?");
如何添加这样的“多个”键?在参数中-例如,K可以是正则表达式吗?或者我应该创建一个HashMap,其中K是一个特定的单词,V包含一个其sysnonyms的arraylist,然后尝试在arraylist上迭代,将拆分的用户输入与arraylist中的元素进行比较,以提取必要的键


另外,我不是一个为了一个年级才这样做的学生。这只是为了自我教育,我没有老师可以问任何问题。

我会说使用同义词列表

List<String> synonyms = new ArrayList<String>();
synonyms.add("Bug");
synonyms.add("Buggy");

if(synonyms.contains(userInputString)){
Map.get("bug");
}
List synonyms=new ArrayList();
同义词。添加(“Bug”);
同义词。添加(“童车”);
if(同义词.contains(userInputString)){
Map.get(“bug”);
}

为每个贴图关键点创建一个这样的集。。。如果列表足够短,可以实用。但是根据定义,映射应该有唯一的键。

再次阅读本部分说明“通过将同义词或相关表达式映射到同一字符串来处理此问题”听起来本练习可能想到的是分两步执行查找

首先,你有一个所有可能的同义词到同一个值的映射,例如

bug → bug
buggy → bug
mistake → bug
other → something else
etc.
然后是第二个映射,其中包含响应的规范键

bug → "Well, you know, all software has some bugs..."
因此,查找包括检查第一个映射,以找到在第二个映射中使用的键,然后该键将给出所需的响应