如何使用Java8中的StringJoiner
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"如何使用Java8中的StringJoiner",在日常操作中,相信很多人在如何使用Java8中的StringJoiner问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2026年11月01日如何使用Java8中的StringJoiner
这篇文章主要介绍"如何使用Java8中的StringJoiner",在日常操作中,相信很多人在如何使用Java8中的StringJoiner问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用Java8中的StringJoiner"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
介绍
在实用StringJoiner类之前,如果我们想要数据最终的字符串以逗号隔开,大概是这样的
StringBuilder sb = new StringBuilder(); IntStream.range(1,10).forEach(i->{ sb.append(i+""); if( i < 10){ sb.append(",") } });如果引入StringJoiner,如何处理呢?
StringJoiner sj = new StringJoiner(","); IntStream.range(1,10).forEach(i->sj.add(i+""));看着是不是更简单直观了呢?
另外,StringJoiner类的构造函数,还可以做到可选择性地从我们自定义的前缀开始和自定义的后缀结尾,比较灵活和实用。
//值依次是分割符 , 前缀 ,后缀 StringJoiner stringJoiner = new StringJoiner(",", "[", "]"); stringJoiner.add("xiao"); stringJoiner.add("zhi"); System.out.println(stringJoiner.toString());输出结果:[xiao,zhi]
StringJoiner在处理sql拼接上面,也非常方便,如拼接 sql 的in条件的时候:
StringJoiner joiner3 = new StringJoiner("','", "'", "'"); joiner3.add("1").add("2"); //输出 : '1','2'更多实用的功能,大家可以探索。
源码
这个类的源码很简单,大家很容易就可以看明白。StringJoiner 更像一个装饰者模式,对外隐藏了StringBuilder。
不过需要注意的是 StringJoiner 并且没有处理一些基本的集合元素情况,比如加入列表的元素,更像针对Collectors而设计。
package java.util; public final class StringJoiner { private final String prefix;//前缀 private final String delimiter;//间隔符 private final String suffix;//后缀 private StringBuilder value;//值 private String emptyValue;//空值 public StringJoiner(CharSequence delimiter) { this(delimiter, "", ""); //默认前缀和后缀为"",重载调用 } public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix) { //间隔符,前缀和后缀判断是否为null,null将抛出异常 Objects.requireNonNull(prefix, "The prefix must not be null"); Objects.requireNonNull(delimiter, "The delimiter must not be null"); Objects.requireNonNull(suffix, "The suffix must not be null"); // 成员变量赋值 this.prefix = prefix.toString(); this.delimiter = delimiter.toString(); this.suffix = suffix.toString(); thisthis.emptyValue = this.prefix + this.suffix;//空值被设置为只有前后缀 } //设置空值,检查是否为null public StringJoiner setEmptyValue(CharSequence emptyValue) { this.emptyValue = Objects.requireNonNull(emptyValue, "The empty value must not be null").toString(); return this; } @Override public String toString() { if (value == null) { return emptyValue; //没有值将返回空值或者后续设置的空值 } else { if (suffix.equals("")) { return value.toString(); //后缀为""直接返回字符串,不用添加 } else { //后缀不为"",添加后缀,然后直接返回字符串,修改长度 int initialLength = value.length(); String result = value.append(suffix).toString(); // reset value to pre-append initialLength value.setLength(initialLength); return result; } } } //初始化,先添加前缀,有了之后每次先添加间隔符,StringBuilder后续append字符串 public StringJoiner add(CharSequence newElement) { prepareBuilder().append(newElement); return this; } //合并StringJoiner,注意后面StringJoiner 的前缀就不要了,后面的appen进来 public StringJoiner merge(StringJoiner other) { Objects.requireNonNull(other); if (other.value != null) { final int length = other.value.length(); // lock the length so that we can seize the data to be appended // before initiate copying to avoid interference, especially when // merge 'this' StringBuilder builder = prepareBuilder(); builder.append(other.value, other.prefix.length(), length); } return this; } //初始化,先添加前缀,添加之后每次先添加间隔符 private StringBuilder prepareBuilder() { if (value != null) { value.append(delimiter); } else { value = new StringBuilder().append(prefix); } return value; } public int length() { // Remember that we never actually append the suffix unless we return // the full (present) value or some sub-string or length of it, so that // we can add on more if we need to. //添加后缀的长度 return (value != null ? value.length() + suffix.length() : emptyValue.length()); } }到此,关于"如何使用Java8中的StringJoiner"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
后缀
前缀
实用
字符
字符串
学习
更多
元素
源码
长度
处理
帮助
输出
直观
接下来
不用
函数
功能
变量
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
精品咖啡豆
南京欣网互联网络科技
江苏根荣互联网科技
互联网科技社
互联网科技的
有马互联网科技
有木互联网科技
佩信高科技互联网
中国航天科技大学国际工业互联网
民营互联网公司国防科技
畅思互联网科技
互联网行业科技股
国大互联网教育科技有限公司薪资
沐思想互联网科技有限公司
易企秀互联网科技是做什么的
世界互联网科技成果奖
保山互联网科技靠谱吗
北京互联网科技类企业分布
宁波允成互联网科技有限公司
互联网最新的科技
河南真二互联网科技有限公司
互联网最新的科技有限公司
科技制造互联网公司
互联网女皇 腾讯科技
深圳艾佳互联网科技
随着互联网科技发展
互联网科技人工智能实验室
烟台灵鸽互联网科技有限公司
长沙易易互联网科技有限公司