专业的编程技术博客社区

网站首页 > 博客文章 正文

学习廖雪峰的JAVA教程---java核心类(StringJoiner)

baijin 2024-10-02 11:25:31 博客文章 6 ℃ 0 评论

要高效拼接字符串,应该使用StringBuilder。

很多时候,我们拼接的字符串像这样:

// Hello Bob, Alice, Grace!

public class Main {

public static void main(String[] args) {

String[] names = {"Bob", "Alice", "Grace"};

var sb = new StringBuilder();

sb.append("Hello ");

for (String name : names) {

sb.append(name).append(", ");

}

// 注意去掉最后的", ":

sb.delete(sb.length() - 2, sb.length());

sb.append("!");

System.out.println(sb.toString());

}

}

类似用分隔符拼接数组的需求很常见,所以Java标准库还提供了一个StringJoiner来干这个事:

import java.util.StringJoiner;
public class Main {
 public static void main(String[] args) {
 String[] names = {"Bob", "Alice", "Grace"};
 var sj = new StringJoiner(", ");
 for (String name : names) {
 sj.add(name);
 }
 System.out.println(sj.toString());
 }
}

慢着!用StringJoiner的结果少了前面的"Hello "和结尾的"!"!遇到这种情况,需要给StringJoiner指定“开头”和“结尾”:

import java.util.StringJoiner;
public class Main {
 public static void main(String[] args) {
 String[] names = {"Bob", "Alice", "Grace"};
 var sj = new StringJoiner(", ", "Hello ", "!");
 for (String name : names) {
 sj.add(name);
 }
 System.out.println(sj.toString());
 }
}

那么StringJoiner内部是如何拼接字符串的呢?如果查看源码,可以发现,StringJoiner内部实际上就是使用了StringBuilder,所以拼接效率和StringBuilder几乎是一模一样的。

String.join()

String还提供了一个静态方法join(),这个方法在内部使用了StringJoiner来拼接字符串,在不需要指定“开头”和“结尾”的时候,用String.join()更方便:

String[] names = {"Bob", "Alice", "Grace"};
var s = String.join(", ", names);

练习

请使用StringJoiner构造一个SELECT语句:

import java.util.StringJoiner;
public class Main {
 public static void main(String[] args) {
 String[] fields = { "name", "position", "salary" };
 String table = "employee";
 String select = buildSelectSql(table, fields);
 System.out.println(select);
 System.out.println("SELECT name, position, salary FROM employee".equals(select) ? "测试成功" : "测试失败");
 }
 static String buildSelectSql(String table, String[] fields) {
 // TODO:
var sj = new StringJoiner(", ","SELECT "," FROM employee");
for(String field : fields){
sj.add(field);
}
 return sj.toString();
 }
}

小结

用指定分隔符拼接字符串数组时,使用StringJoiner或者String.join()更方便;

用StringJoiner拼接字符串时,还可以额外附加一个“开头”和“结尾”。

【关键:

  1. var sj = new StringJoiner(", ", "Hello ", "!");
  2. String[] names = {"Bob", "Alice", "Grace"};
  3. var s = String.join(", ", names);

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表