String.join()vs其他字符串连接操作

Ank*_*jan 12 java string java-8

我已经快速阅读了Java8 String api文档.

现在我对String.join()方法很好奇,以便连接/连接字符串.

这种例子帮助我更好地理解了:

//Old way:
String str1 = "John";
String str2 = "Doe";
String result = str1 + " " +str2;
//or by using str1.concat(str2);

//New way:
String result = String.join(" ", str1, str2);
Run Code Online (Sandbox Code Playgroud)

不过,我不明白应该使用哪一个.这两个过程之间是否有任何性能或其他差异.

任何帮助将不胜感激.

Rea*_*tic 22

String.join依赖于StringJoiner本身依赖于内部StringBuilder来构建连接字符串的类.

因此,性能方面与使用StringBuilder和追加它或使用链+(现在StringBuilder由编译器转换为操作链)非常相似.

但意义String.join不是作为一般的更换+String.concat,但作为一个的"扭转操作" String.split的操作.在这种情况下更有意义 - 当你有一堆你希望使用分隔符连接在一起的字符串时 - 而不是替代它concat.

也就是说,建设等相关的输出"a/b/c/d""(a+b+c+d)"当你有a,b,cd在数组或列表,String.joinStringJoiner将使操作清晰可读.

  • 请注意,它不是*指定*`StringJoiner`依赖于`StringBuilder`的任何地方.特别是在OpenJDK9中,它已经过优化,不再使用`StringBuilder`. (5认同)