Strman源码阅读2
上次说到开头使用的lambda函数
这次我们继续看第一个方法1 append方法
append方法,我们应该都很熟悉就是在后面追加字符串。一般都用过StringBuffer的apped方法吧。
public static String append(final String value, final String... appends) {
return appendArray(value, appends);
}
public static String appendArray(final String value, final String[] appends) {
validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER);
if (appends == null || appends.length == 0) {
return value;
}
StringJoiner joiner = new StringJoiner("");
for (String append : appends) {
joiner.add(append);
}
return value + joiner.toString();
}
这里的StringJoiner让我眼前一亮,赶紧去搜了下这个类的方法!
StringJoiner 是JAVA8 对字符串操作的一个迥然不同的方法,
StringJoiner 有两个构造方法
public StringJoiner(CharSequence delimiter) {
this(delimiter, "", "");
}
public StringJoiner(CharSequence delimiter,
CharSequence prefix,
CharSequence suffix) {
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");
// make defensive copies of arguments
this.prefix = prefix.toString();
this.delimiter = delimiter.toString();
this.suffix = suffix.toString();
this.emptyValue = this.prefix + this.suffix;
}
可以看到主要是依赖这个方法:
StringJoiner(CharSequence delimiter, CharSequence prefix,CharSequence suffix)例如 :
StringJoiner sj = new StringJoiner(",","[","]");
sj.add("abc");
sj.add("def");
sj.add("ijk");sj.toString(); //输出为 "[abc,def,ijk]" 棒不棒!!
String result = String.join(", ", "One", "Two", "Three");
result的结果会是 One, Two, Three
妈妈咪呀,我再也不用为了删除最后一个逗号而纠结了(用StringBuffer拼接的话)。
String.join() 这个方法其实就是 用StringJoiner实现的看到这里 我明白了 这个Strman用了很多JAVA8的内容~。
网友评论