gpt4 book ai didi

java - 有效地检查子字符串并替换它们——我可以在这里提高性能吗?

转载 作者:行者123 更新时间:2023-11-30 07:13:34 24 4
gpt4 key购买 nike

我需要检查数百万个字符串中的缩写并将其替换为完整版本。由于数据原因,只应替换以逗号结尾的缩写。字符串可以包含多个缩写。

我有一个包含缩写->完整版本对的查找表,它包含大约 600 对。

我目前的设置看起来像这样。在启动时,我使用 Jackson 从 csv 文件创建一个 ShortForm 实例列表,并将它们保存在一个单例中:

public static class ShortForm{
public String fullword;
public String abbreviation;
}

List<ShortForm> shortForms = new ArrayList<ShortForm>();
//csv code ommited

还有一些使用列表的代码

for (ShortForm f: shortForms){
if (address.contains(f.abbreviation+","))
address = address.replace(f.abbreviation+",", f.fullword+",");
}

现在可以了,但是很慢。有什么办法可以加快速度吗?第一步是加载带有逗号的 ShortForm 对象,但我还能做什么?

====== 更新更改代码以相反的方式工作。将字符串拆分为单词并检查一组以查看字符串是否是缩写。

    StringBuilder fullFormed = new StringBuilder();
for (String s: Splitter.on(" ").split(add)){
if (shortFormMap.containsKey(s))
fullFormed.append(shortFormMap.get(s));
else
fullFormed.append(s);
fullFormed.append(" ");
}

return fullFormed.toString().trim();

测试表明这比原始方法快 13 倍以上。为 davecom 干杯!

最佳答案

如果你跳过 contains() 部分就已经快一点了:)

关于java - 有效地检查子字符串并替换它们——我可以在这里提高性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19313255/

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