Skip to content
On this page

StringJoiner

To concatenate strings efficiently, StringBuilder should be used.

Many times, the strings we concatenate look like this:

java
// output: 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(", ");
    }
    // Pay attention to remove the last", ":
    sb.delete(sb.length() - 2, sb.length());
    sb.append("!");
    System.out.println(sb.toString());
  }
}

The need to join arrays with delimiters is very common, so the Java standard library also provides a StringJoiner to do this:

java
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());
    }
}

Wait! The result of using StringJoiner is that the front "Hello " and the ending "!" are missing! In this case, you need to specify the "beginning" and "end" for StringJoiner :

java
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());
    }
}

String.join()

String also provides a static method join() , which uses StringJoiner internally to splice strings. When there is no need to specify the "beginning" and "end", it is more convenient to use String.join() :

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

Practise

Please use StringJoiner to construct a SELECT statement:

java
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:
        return "";
    }
}

Summary

When splicing string arrays with specified delimiters, it is more convenient to use StringJoiner or String.join() ;

When using StringJoiner to join strings, you can also append an additional "beginning" and "end".

StringJoiner has loaded