StringBuilder 最适合这种情况,因为它是可变的。 String 是不可变的,因此当您修改字符串时,它会创建一个新对象。
,
似乎对于给定的任务,最好通过定义键的 list 来匹配输入列表并使用 Stream API 来摆脱多个重复的 if
语句生成字符串id,例如Collectors.joining
with delimiter 或 without the delimiter。
假设有一条规则来创建 id 的一部分:append "Test Value " + key.toUpperCase()
,实现可能如下所示:
final List<String> keys = Arrays.asList(
"name","age" /* and other needed keys*/
);
public String createId(List<String> list) {
return keys
.stream()
.filter(list::contains)
.map(String::toUpperCase)
.map(str -> "Test Value " + str)
.collect(Collectors.joining("_")); // or Collectors.joining()
}
System.out.println(createId(Arrays.asList("age","name","surname")));
// output: Test Value NAME_Test Value AGE
如果应为 name
、age
等提供自定义部件,则应准备和使用 Map
匹配项,也可以将输入 {{ 1}} 到 list
以方便查找:
Set<String
,
总的来说,您对何时使用 String
连接与 StringBuilder
的理解是正确的。 Java Language Specification 说
为了提高重复字符串连接的性能,Java
编译器可以使用 StringBuffer 类或类似的技术来
减少创建的中间 String 对象的数量
表达式的求值。
在大多数情况下,您应该使用能够提高可读性和可维护性的任何一种方法。
本文链接:https://www.f2er.com/11832.html