StringUtils for StringBuilders?



我正在使用一段代码,其中有一个StringBuilder,我将在其中添加一些数据,然后发送带有所有数据的电子邮件。下面是代码:

StringBuilder stringBuild= new StringBuilder();
for (int i = 0; i < variable.size(); i++) { //Unknown size, could be quite big
stringBuild.append(thingsToDO((Map<String, Object>) variable.get(i)));
}
sendEmail(stringBuild);

/**
* @param stringBuild
*/
private void enviarEmail(StringBuilder stringBuild)
{
if(StringUtils.isNotBlank(stringBuild)) {
//Email OK
} else {
//Email with all errors
}
}

是可以使用StringUtils库StringBuilders或有更好的方法与StringBuilders工作?

我没有那么多的经验与StringBuilders,所以也许我错过了什么,任何帮助是感激

试着有Java API文档和StringUtils API文档在手,这样你就可以决定你是否真的需要更多的依赖(Apache Commons Lang),或者如果你只想用本地类。

需要记住两个方面:可维护性和性能。可维护性意味着代码易于理解和修改。在性能方面,您必须对结果进行分析,以查看哪个解决方案更快。

要从许多字符串中生成String或仅连接几个字符串,这些字符串的大小可能很大,您需要使用StringBuilder,其他内置机制,如String.join(),Collectors.joining()

允许避免创建数据的多个中间副本,这将发生在平面字符串连接的情况下(因为String是不可变的,每次连接导致在内存中分配一个新的字节数组,并将以前的数据复制到其中)。

关于Apache Commons中StringUtils的使用,您可以验证CharSequence的任何实例(String,StringBuilder等)。这是完全可以的。

但还有更多。使用或不使用特定的库或框架都有成本。一方面,它通过提供一些功能给你带来了一些好处,但另一方面,你引入了一个依赖关系,这有一些后果(需要管理依赖关系,有时更新依赖关系可能需要更改代码,你也可能引入一个漏洞,等等)。所以你总是需要比较这两种成本。在项目中尽可能少的依赖总是一个好主意。

在这个特殊的例子中,我没有看到使用StringUtils的理由,除非你不使用Apache Commons。

下面是一个标准String.isBlank()的例子:

String str = variable.stream()
.map(e -> thingsToDO((Map<String, Object>) e))
.collect(Collectors.joining());

if (!str.isBlank()) {
// do the action
}

最新更新