Performance 为列表中的每个字符串使用replaceAll的最佳方法<;字符串>;
我有一个映射,其中包含regexpr作为键和replacer作为值,我需要为列表中的每个字符串执行replaceAll 我想知道我的答案是否正确,或者是否有更好的方法,我担心性能会下降。因为我需要对包含大量字符串的大量列表执行此操作Performance 为列表中的每个字符串使用replaceAll的最佳方法<;字符串>;,performance,java-8,Performance,Java 8,我有一个映射,其中包含regexpr作为键和replacer作为值,我需要为列表中的每个字符串执行replaceAll 我想知道我的答案是否正确,或者是否有更好的方法,我担心性能会下降。因为我需要对包含大量字符串的大量列表执行此操作 Map<String,String> m_replace = null; //Map which contains regexpr,replacer private static String replace(String s) { for (
Map<String,String> m_replace = null; //Map which contains regexpr,replacer
private static String replace(String s) {
for (Map.Entry<String, String> entry : m_replace.entrySet())
s = s.replaceAll(entry.getKey(), entry.getValue());
return s;
}
public List<String> parseList(List<String> input) {
return input.parallelStream()
.map(p -> p = replace(p))
.collect(Collectors.toList());
}
Map m_replace=null//包含regexpr、replacer的映射
专用静态字符串替换(字符串s){
对于(Map.Entry:m_replace.entrySet())
s=s.replaceAll(entry.getKey(),entry.getValue());
返回s;
}
公共列表解析列表(列表输入){
返回input.parallelStream()
.map(p->p=replace(p))
.collect(Collectors.toList());
}
我认为这对@Otha来说是一个足够好的问题,你应该只更换一次吗?我的意思是,一旦你成功地应用了一个replaceAll
(意味着该模式已被实际找到),你是否应该停止处理所有其他地图条目?@Eugene否,我可能必须在同一行上应用多个模式,顺便说一句,谢谢你纠正我:)@Otha对于列表中的每个元素,你必须遍历整个地图
,然后…@Otha据我所知,复杂性是:O(n)
对于地图
的列表时间O(n+c)
;其中c-是地图的容量,n是条目数。这将是总共O(npow2)
。我认为这对于@Otha来说是一个足够好的问题,你应该只替换一次吗?我的意思是,一旦你成功地应用了一个replaceAll
(意味着该模式已被实际找到),你是否应该停止处理所有其他地图条目?@Eugene否,我可能必须在同一行上应用多个模式,顺便说一句,谢谢你纠正我:)@Otha对于列表中的每个元素,你必须遍历整个地图
,然后…@Otha据我所知,复杂性是:O(n)
对于地图
的列表时间O(n+c)
;其中c-是地图的容量,n是条目数。这将是总共O(npow2)
。