不懂见网站怎么办,网站开发人员 工资,推广平台有哪些,万网市值文章目录 1 why2 what3 how4 练习手段 1 why StringBuilder拼接包含分隔符的字符序列时#xff0c;分隔符需要一个一个添加#xff0c;或者需要手动删除末尾冗余的分隔符#xff0c;代码不美观#xff0c;不好看。 比如#xff0c;单个字符串依次拼接时#xff1a;
Stri… 文章目录 1 why2 what3 how4 练习手段 1 why StringBuilder拼接包含分隔符的字符序列时分隔符需要一个一个添加或者需要手动删除末尾冗余的分隔符代码不美观不好看。 比如单个字符串依次拼接时
StringBuilder sb new StringBuilder();
sb.append(apple);
sb.append(,);
sb.append(orange);
sb.append(,);
sb.append(milk);
String str sb.toString();以及字符串集合循环拼接时
StringBuilder sb new StringBuilder();
for (String s:foodList) {sb.append(s);sb.append(,);
}
sb.deleteCharAt(sb.length()-1);
String str sb.toString();StringJoiner很好的解决了这个问题。
2 what StringJoiner用于构造由分隔符分隔的字符序列并且可选前缀、后缀。内部实际是基于StringBuilder实现。 由于本文只使用StringJoiner替换StringBuilder生成带分隔符的字符序列所以与之无关的功能不介绍详情可以参见jdk1.8官网手册。 如图需要用到的有StringJoiner本身提供的StringJoiner构造方法、add方法、toString方法以及String类中通过StringJoiner实现的join方法。 1StringJoiner构造方法
public StringJoiner(CharSequence delimiter) {this(delimiter, , );
}创建对象时可以指定分隔符。 2add方法
public StringJoiner add(CharSequence newElement) {prepareBuilder().append(newElement);return this;
}外层使用的prepareBuilder()方法及StringBuilder的append方法继续查看prepareBuilder方法
private StringBuilder prepareBuilder() {if (value ! null) {value.append(delimiter);} else {value new StringBuilder().append(prefix);}return value;
}也是用的StringBuilder的append方法区别是增加了prefix前缀用于在输出的字符序列最前面添加用户自定义的字符比如[。 3toString方法
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 initialLengthvalue.setLength(initialLength);return result;}}
}4String类的join方法
public static String join(CharSequence delimiter, CharSequence... elements) {Objects.requireNonNull(delimiter);Objects.requireNonNull(elements);// Number of elements not likely worth Arrays.stream overhead.StringJoiner joiner new StringJoiner(delimiter);for (CharSequence cs: elements) {joiner.add(cs);}return joiner.toString();
}可以看到实际是调用StringJoiner实现的。 此处实现了suffix分隔符的填充操作。 至此介绍完毕相关功能后面进行尝试。
3 how 1单个字符串依次拼接时 简单字符可直接使用String类的join方法。
String result String.join(,, aaa, bbb ,ccc);第一个入参是分隔符后面依次添加要追加的字符串。 字符串内容复杂时使用StringJoiner。
StringJoiner sj new StringJoiner(,);
sj.add(apple);
sj.add(orange);
sj.add(milk);
String str sj.toString();2字符串集合循环拼接时
ListString foodList new ArrayListString();
foodList.add(apple);
foodList.add(orange);
foodList.add(milk);StringJoiner sj new StringJoiner(,);
for (String s:foodList) {sj.add(s);
}
String str sj.toString();和一开始StringBuilder的方式比较下是不是简洁许多
4 练习手段 可以参照“3 how”章节尝试在自己的项目中替换原本使用StringBuilder生成包含分隔符的字符序列功能。