当前位置: 首页 > 知识库问答 >
问题:

Hashmaps的问题

尹承业
2023-03-14

我在尝试迭代一个句子时遇到了一个问题,这个句子是用户为我的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;
        }

    }
}

共有1个答案

云星波
2023-03-14

注意代码中输入和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行相同) 必需:找到哈希表[]:哈希表[] 请帮帮我!