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

是否将ReduceComplexity或任何优化的HashMap逻辑值替换为包含段落字符串数组的键?

巫马盛
2023-03-14

我有一个名为段落的数组和一个名为g\u hMapValues的Hashmap对象。我在这段代码中所做的是迭代整个数组段落,并将其放入文本中,并替换与其hashmap值对应的字符串(如果它与键匹配)。

注意:-请不要处理课堂上的课文。这对我来说很有效。我需要做的是优化逻辑(嵌套循环),因为我的段落可能包含数十万条记录。

for(String keys : this.g_hMapValues.keySet()){ //hmapValues have some 20-30 key pair Values

        for (Object text : paragraph) { //paragraph may Contains 100000 of record.
            Text textElement = (Text) text;
            System.out.println(textElement.getValue());
            if (textElement.getValue().equalsIgnoreCase(keys)) {
                textElement.setValue(String.valueOf(this.g_hMapValues.get(keys)));
            }
        }
        }

我的钥匙数量有限,但它可能存在于多个段落中,也可能存在很多次。我没有找到任何优化的逻辑来实现这一点,响应REST服务需要花费大量时间。

我需要优化这个迭代,因为在调试期间,我发现这个迭代比通常需要更多的时间。


共有1个答案

禄和宜
2023-03-14

您不必遍历hashmap的keySet。仅遍历段落数组并检查映射是否包含当前text Element示例

for (Object text : paragraph) { //paragraph may Contains 100000 of record.
    Text textElement = (Text) text;
    System.out.println(textElement.getValue());
    if (this.g_hMapValues.contains(textElement.getValue())) {
        textElement.setValue(String.valueOf(this.g_hMapValues.get(keys)));
    }
}

如果区分大小写是一个问题,您可以将不区分大小写的字符串作为HashMap键来查看。

 类似资料:
  • 问题内容: 如何测试字符串以查看其是否包含数组中的任何字符串? 而不是使用 问题答案: 编辑:这是使用Java 8流API的更新。如此清洁。仍然可以与正则表达式结合使用。 另外,如果我们将输入类型更改为List而不是数组,则可以使用。 如果希望返回匹配的字符串,也可以使用。 原始的过时的答案: 这是(VERY BASIC)静态方法。请注意,在比较字符串上区分大小写。一个原始的,使其不区分大小写的办

  • 问题内容: 我正在尝试检测字符串是否包含至少一个存储在数组中的URL。 这是我的数组: 该字符串由用户输入并通过PHP提交。在确认页面上,我想检查输入的URL是否在数组中。 我尝试了以下方法: 无论输入什么,返回值始终为“找不到匹配项”。 这是正确的做事方式吗? 问题答案: 尝试这个。 如果要检查不区分大小写,请使用stristr()或stripos()。

  • 我是Kotlin的新手(我有Java背景),我似乎不知道如何检查字符串是否包含关键字列表中的匹配项。 我想做的是检查一个字符串是否包含一个关键字数组的匹配(请不区分大小写)。如果是,则打印出匹配的关键字和包含该关键字的字符串。(我将循环访问一个文件中的一串字符串)。 这里有一个MVE供初学者使用: 作为一个开始(这忽略了'match'变量和getting-a-list-of-keywords-ma

  • 主要目标是用hashmap中的值替换字符串中的一些单词作为关键字(关键字是文本中的单词)。钥匙的格式不同。例如:主文本:“Lookahead和Lookahead,统称为Lookahead,是[0-23]断言”hashmap:{Lookahead=test1,Lookahead=test2,Lookahead=test3,[0-23]=newvalue}预期输出:“test1和test2,统称为te

  • 问题内容: 我有一个字节数组,其中包含我希望转换为字符串的ASCII字符。例如: myByteArray在循环后应包含字符串“ 12345678”。如何将此字符串转换为String变量? 谢谢! 问题答案: 用 字符串类为此提供了一个构造函数。 旁注:此处的第二个参数是CharSet(字节编码),应谨慎处理。这里更多。

  • 我正在寻找一个运算符,它允许我检查字段的值是否包含某个字符串。 比如: 可能吗?