JAVA8 的StringJoiner 使用及原理解析
前几天偶然看到jdk1.8突然新增了一个类StringJoiner,就研究了一下是怎么使用的,以及看了下它的源码.
使用如下:
publicstaticvoidmain(String[]args){
//间隔符是,
StringJoinerjoiner1=newStringJoiner(",");
joiner1.add("1").add("2").add("3");
System.out.println(joiner1.toString());
//1,2,3
//以[开头中间的间隔符是,以]结尾
StringJoinerjoiner2=newStringJoiner(",","[","]");
joiner2.add("1").add("2").add("3");
System.out.println(joiner2.toString());
//[1,2,3]
}
//我们先看下他的构造方法:
如果只有中间的一个分割字符,则其左边和右边的字符都是空,
//前缀
privatefinalStringprefix;
//后缀
privatefinalStringdelimiter;
//中间分隔符
privatefinalStringsuffix;
publicStringJoiner(CharSequencedelimiter){
this(delimiter,"","");
}
publicStringJoineradd(CharSequencenewElement){
prepareBuilder().append(newElement);
returnthis;
}
privateStringBuilderprepareBuilder(){
if(value!=null){
value.append(delimiter);
}else{
value=newStringBuilder().append(prefix);
}
returnvalue;
}
add方法,首先是把值拼接一下前缀,再拼接一下中间的分隔符,再返回,再继续拼接来的字符串.
@Override
publicStringtoString(){
if(value==null){
returnemptyValue;
}else{
if(suffix.equals("")){
returnvalue.toString();
}else{
intinitialLength=value.length();
Stringresult=value.append(suffix).toString();
//resetvaluetopre-appendinitialLength
value.setLength(initialLength);
returnresult;
}
}
}
重写的toString方法,就是把整个StringBuilder转化为String了.
到此这篇关于JAVA8的StringJoiner使用及原理解析的文章就介绍到这了,更多相关JAVA8的StringJoiner使用内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
