Java StringJoiner类用法详解

培训教学 潘老师 6个月前 (09-14) 127 ℃ (0) 扫码查看

学习使用StringJoiner类(在Java 8中引入)以不同方式连接字符串。我们可以使用它用分隔符连接字符串,并在最终字符串周围使用前缀和/或后缀字符

1.创建StringJoiner

我们可以通过两种方式创建StringJoiner实例。第一个构造函数仅采用分隔符,第二个构造函数采用附加的前缀和后缀字符串。

String DELIMITER = ",";
    String PREFIX = "[";
    String SUFFIX = "]";
    StringJoiner stringJoinerWithDelimiter = new StringJoiner(DELIMITER);
    StringJoiner stringJoinerWithPrefixSuffix = new StringJoiner(DELIMITER, PREFIX, SUFFIX);

我们不能传递NULL参数,它们将导致NullPointerException。

Assertions.assertThrows(NullPointerException.class, () -> {
  new StringJoiner(null);
});

默认情况下,如果我们不向连接器添加任何字符串,它将返回默认的空字符串。空字符串取决于用于创建StringJoiner实例的构造函数。

  • 如果仅使用分隔符,则默认值为空字符串。
  • 如果使用了 prefix 和 suffix ,则默认值为prefix + suffix连接的字符串。
Assertions.assertEquals("", stringJoinerWithDelimiter.toString());
Assertions.assertEquals("[]", stringJoinerWithPrefixSuffix.toString());

我们可以使用setEmptyValue()方法更改默认字符串。

stringJoinerWithDelimiter.setEmptyValue("BLANK");
Assertions.assertEquals("BLANK", stringJoinerWithDelimiter.toString());

默认前缀和后缀值为空字符串。

3. 添加字符串

我们可以使用StringJoiner.add()方法来添加需要连接的字符串。

stringJoinerWithDelimiter.add("alex");
stringJoinerWithDelimiter.add("brian");
stringJoinerWithDelimiter.add("charles");
Assertions.assertEquals("alex,brian,charles", stringJoinerWithDelimiter.toString());

如果已使用前缀和后缀,则最终字符串将包含附加的前缀和后缀。

stringJoinerWithPrefixSuffix.add("alex");
stringJoinerWithPrefixSuffix.add("brian");
stringJoinerWithPrefixSuffix.add("charles");
Assertions.assertEquals("[alex,brian,charles]", stringJoinerWithPrefixSuffix.toString());

4. 合并StringJoiner实例

应用程序的两个部分可能连接了字符串,现在需要将它们组合起来。使用StringJoiner.merge()方法合并两个实例StringJoiner以生成单个结果。

当我们使用joiner1.merge(joiner2)合并两个连接器时–

  • joiner2的内容附加到joiner1。
  • 前缀和后缀用于joiner1。
  • 两个连接器都保留其分隔符。

让我们通过一个例子来理解合并过程。在下面的 Java 程序中,我们创建两个具有不同分隔符、前缀和后缀的 StringJoiner对象。合并的StringJoiner具有来自第一个连接器的前缀和后缀以及来自两个连接器的分隔符。

StringJoiner joiner1 = new StringJoiner(",", "[", "]");
StringJoiner joiner2 = new StringJoiner("-", "{", "}");
joiner1.add("a");
joiner1.add("b");
joiner2.add("1");
joiner2.add("2");
StringJoiner finalJoiner = joiner1.merge(joiner2);
Assertions.assertEquals("[a,b,1-2]", finalJoiner.toString());

5. Collectors.joining()中的StringJoiner

Collectors.joining () API 是 Java 8 Streams 的一部分。它连接字符串流(或基元流及其字符串值)。Collectors.joining ()内部使用StringJoiner类。

String result = Stream.of("a", "b", "c").collect(Collectors.joining(",", "[", "]"));
Assertions.assertEquals("[a,b,c]", result);

6. StringJoiner和StringBuilder的区别

使用StringBuilder,我们将以备用顺序附加每个字符串和分隔符。

StringBuilder builder = new StringBuilder();
String result = builder.append("a").append(",").append("b").append(",").append("c").toString();

在构造函数中使用带有分隔符的StringJoiner,我们只需要关注要添加的字符串。分隔符将自动添加。

stringJoinerWithDelimiter.add("a").add("b").add("c");

总的来说,与StringBuilder相比,StringJoiner使连接字符串变得容易。

七、结论

在本Java 8 StringJoiner教程中,我们学习了使用构造函数创建StringJoiner并将其与另一个StringJoiner实例合并。我们学习了仅使用分隔符以及前缀和后缀字符串来连接字符串。我们还了解了如何通过Collectors.joining()方法在Stream API中使用StringJoiner。

总的来说,StringJoiner很像StringBuilder和StringBuffer类,但具有更强大的 API 用于添加分隔字符串,但它不适合其他格式化任务。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/9038.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】