行业资讯 2025年08月6日
0 收藏 0 点赞 801 浏览 3008 个字
摘要 :

文章目录 1.创建StringJoiner 3. 添加字符串 4. 合并StringJoiner实例 5. Collectors.joining()中的StringJoiner 6. StringJoiner和StringBuilder的区别 七、结论 学习……




  • 1.创建StringJoiner
  • 3. 添加字符串
  • 4. 合并StringJoiner实例
  • 5. Collectors.joining()中的StringJoiner
  • 6. StringJoiner和StringBuilder的区别
  • 七、结论

学习使用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.zuozi.net/9210.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号