gpt4 book ai didi

java - 在java中检查 HashMap 上的正则表达式模式列表的有效和最快的方法是什么

转载 作者:行者123 更新时间:2023-12-02 09:30:06 24 4
gpt4 key购买 nike

我有一个包含 1000 多个键的 HashMap 。我有一个正则表达式模式列表。我想知道从 HashMap 中搜索与所有模式匹配的所有键以检索键值对的快速有效的方法。

示例模式如下

/Rows/\d{1,}/Mei/des-id
/Rows/\d{1,}/cona/des-neigr/port-id
/Rows/\d{1,}/cona/des-neigr/receiving

这是我编写的代码,但我正在为每个模式迭代整个映射。

Map<String,String> finalMap = new HashMap<>();

for(String pattern : patternList){
Pattern p = Pattern.compile(pattern);
map.entrySet().stream().filter(entry -> p.matcher(entry.getKey()).matches()).forEach(x -> {
finalMap.put(x.getKey(),x.getValue().asText());
});
}

最佳答案

据我了解您的代码,您正在搜索至少与一种模式匹配的条目。所以我建议反转逻辑 - 对于每个条目检查是否有任何模式匹配(应用@elliott-frisch建议) - 像这样:

List<Pattern> patterns = patternList.stream().map(Pattern::compile).collect(Collectors.toList());
Map<String, String> finalMap = map.entrySet().stream()
.filter(
entry -> patterns.stream()
.anyMatch(
pattern -> pattern.matcher(entry.getKey()).matches()
)
)
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().asText()
));

关于java - 在java中检查 HashMap 上的正则表达式模式列表的有效和最快的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58056793/

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