为了账号安全,请及时绑定邮箱和手机立即绑定

旧瓶装新酒的 Java 8 StringJoiner

标签:
Java

终于,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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消