gpt4 book ai didi

java - 使用 Hashmaps 理解两个或多个键

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:00 24 4
gpt4 key购买 nike

我遇到 HashMap 问题。在我的 hashmap 方法中,我希望有两个或更多关键字作为键,反对有一个。例如,假设“教授姓名”是关键字,我希望用户输入包含两个或更多关键字的句子。例如

    String[] temp3 = { "instructor","teacher","mentor" };
responses.put("professor name", temp3);

然后用户输入“教授姓名是什么”代码就挂了。但另一方面,如果

  String[] temp3 = { "instructor","teacher","mentor" };
responses.put("professor", temp3);

代码有效。所以我希望能够输入一些包含两个或多个关键字反对一个的句子。我将不胜感激任何形式的帮助。

这是我的hashmap方法

  private static HashMap<String, String[]> populateSynonymMap() {

String[] temp1 = { "instructor","teacher","mentor" };
responses.put("professor name", temp1);
String[] temp2 = { "amount of test","test load","quantity of test" };

return responses;
}

这是我的主要方法

    public static void main(String args[]) throws ParseException, IOException {
/* Initialization */
HashMap<String, String[]> synonymMap = new HashMap<String, String[]>();
synonymMap = populateSynonymMap(); // populate the map


Scanner scanner = new Scanner(System.in);
String input = null;
/*End Initialization*/
System.out.println("Welcome To DataBase ");
System.out.println("What would you like to know?");

System.out.print("> ");
input = scanner.nextLine().toLowerCase();
String[] inputs = input.split(" ");
for (String ing : inputs) { // iterate over each word of the sentence.
boolean found = false;
for (Map.Entry<String, String[]> entry : synonymMap.entrySet()) {
String key = entry.getKey();
String[] value = entry.getValue();
if (key.equals(ing) || Arrays.asList(value).contains(ing)) {

found = true;
parseFile(entry.getKey());``
}
break;
}
if (found) {
break;
}


}
}

假设 ParseFile 方法有效

最佳答案

我会使用 String contains 方法来检查多个单词。这将解决您检查单个单词(如“教授”)或多个单词(如“你的教授姓名是什么”)的问题。

    System.out.print("> ");
input = scanner.nextLine().toLowerCase();

for (Map.Entry<String, String[]> entry : synonymMap.entrySet()) {
String key = entry.getKey();
String[] value = entry.getValue();
if (input.contains(key) || key.contains(input)) {
System.out.println("Input found in database -> " +Arrays.asList(value));
break;
}
}

现在这将使它可以处理单个单词或多个单词。但这在以相同顺序输入单词时有效。您可以根据自己的喜好制作它。

例如,您可以将其扩展为将句子中的输入和输出单词从集合中分离出来,然后找出有多少单词匹配等。我建议您使用一些不同的数据结构,使该任务看起来更自然。您可能会考虑按单词和同义词关系组织数据库,这样您就不必担心一个同义词列表中的值具有其他同义词等情况。而且查找可以仅基于单词。

关于java - 使用 Hashmaps 理解两个或多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29933692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com