终于,Java 8在java.util软件包下发布了StringJoiner类。我认为相对于我们使用StringBuffer / StringBuilder的旧式做法来连接字符串,这并非是一个迥然不同的实现。我们一起来看一看StringJoiner的用法和它的内部实现。
例如,我有两个字符串为“Smart”和“Techie”,我想连接这些字符串为[Smart,Techie]。在这种情况下,我的前缀为“[”,后缀为“]”,以及分隔符为“,”。 StringJoiner有如下两个构造函数。
StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
我们想要有前缀和后缀,因此在例子中使用第二个构造函数。
StringJoiner sjr = new StringJoiner(",", "[", "]"); sjr.add("Smart").add("Techie"); System.out.println("The final Joined string is " + sjr);
如果我们不希望有前缀和后缀,那么就:
sjr1.add("Smart").add("Techie");System.out.println("The final Joined string is " + sjr1);
现在,我们将看到add和toString()方法的实现。
public StringJoiner add(CharSequence newElement) { prepareBuilder().append(newElement); return this; }
prepareBuilder()实现如下。
private StringBuilder prepareBuilder() { if (value != null) { value.append(delimiter); } else { value = new StringBuilder().append(prefix); } return value; }
从上面的实现中,可以很明显看到StringJoiner遵循老式的做法。
toString()实现如下。
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; } }
学习快乐!
译文链接:http://www.codeceo.com/article/java-8-stringjoiner.html英文原文:Java 8 StringJoiner – Old Wine With a New Bottle
翻译作者:码农网 – 小峰
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦