我在尝试迭代一个句子时遇到了一个问题,这个句子是用户为我的HashMap中的匹配词输入的。例如,如果用户输入“I is reading with the professor”。教授是关键字。我想扫描用户输入的关键字professor或它在HashMap中的同义词的句子。到目前为止,当我运行我的程序时,代码只是挂起。
下面是我的主要方法:
public static void main(String args[]) throws ParseException, IOException {
/* Initialization */
HashMap<String, String[]> synonymMap = new HashMap<String, String[]>();
synonymMap= populateSynonymMap(); //populate the map
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(" "); //Here split the sentence to words.
for (String in : inputs) { //iterate over each word of the sentence.
if (synonymMap.containsValue(in)) { //check if the values of synonymMap has the string in.
for (Map.Entry<String, String[]> entry : synonymMap.entrySet()) {
String[] value = entry.getValue();
if (Arrays.asList(value).contains(in)) {
parseFile(entry.getKey());
System.out.println("Have a good day!");
break;
}
}
break;
}
}
}
和我的hashmap方法:
private static HashMap<String, String[]> populateSynonymMap() {
responses.put("professor", new String[]{"instructor", "teacher", "mentor"});
responses.put("book", new String[]{"script", "text", "portfolio"});
responses.put("office", new String[]{"room", "post", "place"});
responses.put("day", new String[]{"time", "date"});
responses.put("asssignment", new String[]{"homework", "current assignment "});
responses.put("major", new String[]{"discipline", "focus"," study"});
return responses;
}
Parsefile检查文本文件中的单词并返回句子
public static void parseFile(String%s)抛出FileNotFoundException{File File=new File(“data.txt”);
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(s)) {
// a match!
System.out.println(lineFromFile);
// break;
}
}
}
注意代码中输入和synonymMap的类型:
HashMap<String, String[]> synonymMap = new HashMap<String, String[]>();
// ... more code ...
for (String in : inputs) { //iterate over each word of the sentence.
因此,这将始终返回false:
if (synonymMap.containsValue(in)) { //check if the values of synonymMap has the string in.
现在,您需要:
扫描用户输入的句子,查找关键字professor或它在HashMap中的同义词。
这个棘手的“或”意味着您需要同时检查关键字和值是否匹配,因为关键字值不在它们的列表值中,因为这将是多余的。因此,在for(String in:inputs)
中,您应该具有:
boolean found = false;
for (Map.Entry<String, String[]> entry : synonymMap.entrySet()) {
String key = entry.getKey();
String[] value = entry.getValue();
if (key.equals(in) || Arrays.asList(value).contains(in)) {
found = true;
parseFile(key);
System.out.println("Have a good day!");
break;
}
}
if (found) {
break;
}
问题内容: 我不熟悉Java,而是通过创建一个简单的NaiveBayes分类器进行练习的。我还是对象实例化的新手,想知道如何初始化HashMaps的HashMap。在将新观察值插入分类器时,我可以为给定类中的看不见的功能名称创建新的HashMap,但是我需要初始化吗? 请注意,这个问题并非专门针对朴素贝叶斯分类器,只是认为我会提供一些上下文。 问题答案: 是的,您需要对其进行初始化。 当您想向cl
问题内容: 在知道数组索引的情况下,使用Arrays或HashMaps更好(在性能方面)吗?请记住,示例中的“对象数组/映射”只是一个示例,在我的真实项目中,它是由另一个类生成的,因此我不能使用单个变量。 ArrayExample: HashMapExample: HashMap看起来好得多,但我确实需要在此方面具有性能,因此具有优先权。 编辑: 那么是数组,仍然欢迎建议 编辑: 我忘了提,Arr
我开始更多地接受反应式编程,并试图将其应用于我的典型业务问题。我经常使用的一种模式是数据库驱动类。我有一些已定义的单元类,如ActionProfile,其实例由ActionProfileManager管理,它从数据库表中创建实例并将其存储在映射中 然而,如果我想让它更具反应性,那么创建地图会打破单子。我可以做的一种方法是将映射本身设置为可观察的,并返回一个monad来为客户端查找特定的键。然而,中
从存储这些对象的性能和内存角度来看,哪种方法更好?单独的哈希映射或与所有这些哈希映射的列表。 我可以认为,将其存储为单独的哈希映射的一个优点是,我们不需要迭代列表来查找值是否存在。
问题内容: 在我当前的项目中,我在android中使用GSON库,并且遇到了嵌套地图反序列化的问题。这就是初始json的样子 而我的pojo的 和花类 但是当我尝试反序列化此对象时,我可以访问嵌套的哈希图,示例代码为 有什么建议? 问题答案: 这告诉Gson您想反序列化为未知值类型的Map。您可能会想指定类似的东西,但是您无法在Java中进行指定,因此解决方案是使用他们在Gson中称为TypeTo
我正在尝试在类中创建一个哈希映射数组,然后从数组中检索哈希图以进行计算。这是我的代码: 编译时,我会遇到两个问题: 董事会。java使用未检查或不安全的操作,使用-Xlint:unchecked重新编译 当我用“Xlint:unchecked”编译时,我得到 警告:[未检查]未检查的投射HashMap[]boardPop………(与上述代码的第1行相同) 必需:找到哈希表[]:哈希表[] 请帮帮我!