Strman源碼閱讀2
上次說到開頭使用的lambda函數(shù)
這次我們繼續(xù)看第一個方法1 append方法
append方法埠褪,我們應(yīng)該都很熟悉就是在后面追加字符串女仰。一般都用過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 有兩個構(gòu)造方法
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的結(jié)果會是 One, Two, Three
媽媽咪呀敦跌,我再也不用為了刪除最后一個逗號而糾結(jié)了(用StringBuffer拼接的話)澄干。
String.join() 這個方法其實就是 用StringJoiner實現(xiàn)的看到這里 我明白了 這個Strman用了很多JAVA8的內(nèi)容~。