public static int preaparePatternForJFugue(ArrayList <String> arrLst) {
String contents;
for(int loopIndex2=0;loopIndex2<arrLst.size();loopIndex2++) {
contents=arrLst.get(loopIndex2);
contents=contents.replaceAll(",", "Q");
arrLst.set(loopIndex2, contents);
}
}
是否有可能优化上述代码?代码基本上用于查找和替换ArrayList
字符串中的字符串。我们是否有任何证据可以直接在ArrayList
内查找和替换,而无需首先获取字符串然后替换?
对于cource,我们可以将最后3行组合在一起,如下所示。但这只会节省我猜的代码行数。
arrLst.set(loopIndex2, arrLst.get(loopIndex2).replaceAll(",", "Q"));
答案 0 :(得分:3)
您可以编译Pattern
,然后使用Matcher
replaceAll()
,
Pattern p = Pattern.compile(",");
for (int loopIndex2 = 0; loopIndex2 < arrLst.size(); loopIndex2++) {
Matcher matcher = p.matcher(arrLst.get(loopIndex2));
arrLst.set(loopIndex2, matcher.replaceAll("Q"));
}
答案 1 :(得分:2)
有各种方法可以改善这一点。当然,你需要决定你可以做些什么权衡:
if(!contents.contains(",")){next;}
这循环
通过你的字符串,对于小字符串,它也不错。如果
字符串很小你也可以自己扫描字符串并替换
“就地”(因为字符串是不可变的所以不是真的到位,所以你需要创建一个新字符串,但你明白了。)当然,您需要在所有情况下进行测试以进行验证。如果您的数据集非常小并且您没有实际要求,那么请编写最简单,最直接的理解代码。