• 技术文章 >Java >java教程

    Java8 StringJoiner的代码详解

    黄舟黄舟2017-03-24 11:02:09原创935
    终于,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;
        }
    }

    以上就是Java8 StringJoiner的代码详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Java8 ,StringJoiner
    上一篇:详细介绍Java同步块synchronized block的使用 下一篇:java客户端Jedis操作Redis Sentinel实现连接池的代码分享
    Web大前端开发直播班

    相关文章推荐

    • 带你搞懂Java的接口(实例详解)• Java技巧总结之如何看Lambda源码• 实例详解JAVA抽象工厂模式• 完全掌握Java单例模式• JAVA学习IO操作之字节流和字符流(总结分享)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网