我有一个字符串,其中包含一些数据,我需要从中删除一些特殊字符并对数据进行分词。
以下两种方法哪个更适合提高性能:
以下两种方法哪个更适合提高性能:
String data = "Random data (For performance) Waiting for reply?"
data=data.replaceAll("?", "");
data=data.replaceAll(".", "");
data=data.replaceAll(",", "");
data=data.replaceAll("(", "");
data=data.replaceAll(")", "");
String[] tokens = data.split("\\s+");
for(int j = 0; j < tokens.length; j++){
//Logic on tokens
}
或者
String data = "Random data (For performance) Waiting for reply?"
String[] tokens = data.split("\\s+");
for(int j = 0; j < tokens.length; j++){
tokens[j]=tokens[j].replace("?", "");
tokens[j]=tokens[j].replace(".", "");
tokens[j]=tokens[j].replace(",", "");
tokens[j]=tokens[j].replace("(", "");
tokens[j]=tokens[j].replace(")", "");
//Logic on each token
}
还有其他方法可以提高性能吗?是否有相关的统计数据可供参考?
上面提供的For
循环将用于对每个标记执行其他逻辑。
是对整个内容执行替换方法更快,还是分别对每个标记执行替换方法(无论是否进行替换操作)更快?
即一次性替换并执行其他操作,还是逐步替换每个标记,然后执行所需的操作。
提前感谢您的帮助。
data=data.replaceAll("[\\.,\\(\\)?]");
来一次性替换所有。这样会快得多。 - Uwe Allner