Ich habe ein Problem mit einer Hashmap. In meiner hashmap-Methode möchte ich zwei oder mehr Schlüsselwörter als einen Schlüssel haben, der dazu neigt, einen zu haben. Zum Beispiel möchte ich, dass der Benutzer einen Satz mit zwei oder mehr Schlüsselwörtern eingibt, wobei angenommen wird, dass "Professorenname" ein Schlüsselwort ist. Zum Beispiel:Verstehen Sie zwei oder mehr Schlüssel mit Hashmaps
String[] temp3 = { "instructor","teacher","mentor" };
responses.put("professor name", temp3);
Und der Benutzer gibt "was ist der Professor Name" der Code hängt einfach. Aber auf der anderen Seite, wenn
String[] temp3 = { "instructor","teacher","mentor" };
responses.put("professor", temp3);
der Code funktioniert. Ich möchte also in der Lage sein, einen Satz einzugeben, der zwei oder mehr Schlüsselwörter enthält, die einem gegenüberstehen. Ich werde jede Art von Hilfe zu schätzen wissen.
Hier ist meine hashmap Methode
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;
}
und hier ist meine Hauptmethode
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;
}
}
}
Unter der Annahme, dass die ParseFile Methode
Ich verstehe nicht –
Ja Sir genau so –
einen Satz Schlüssel „foo bar baz“ In Anbetracht, jedes einzelne Wort verwenden, sollten die Daten, aber was ist mit mehreren Wortuntergruppen, zB „foo baz“ return - sollte „foo baz "finden auch eine Übereinstimmung oder nur einzelne Wörter des Satzes? Hinweis: Wenn Sie "nein" sagen, werde ich die Frage beantworten (weil es eine einfache Lösung gibt), wenn "ja" vielleicht nicht :) – Bohemian