美文网首页
Guava——Joiner

Guava——Joiner

作者: 爱吃菜的流浪狗 | 来源:发表于2019-01-02 14:51 被阅读0次

将一个字符串序列用分隔符连接起来。

1.构造函数

只对外提供静态Joiner.on方法来构造joiner

public static Joiner on(String separator) {

    return new Joiner(separator);

//调用构造方法,传入分隔符分为字符串和字符两种形式

}

public static Joiner on(char separator) {

//字符转换为字符串

    return new Joiner(String.valueOf(separator));

}

private Joiner(String separator) {

    this.separator = (String)Preconditions.checkNotNull(separator);

}

2.检查null

忽略空值

public Joiner skipNulls()

@CheckReturnValue

public Joiner useForNull(final String nullText) {

    Preconditions.checkNotNull(nullText);

    return new Joiner(this) {

        CharSequence toString(@Nullable Object part) {

            return (CharSequence)(part == null ? nullText : Joiner.this.toString(part));

        }

        public Joiner useForNull(String nullTextx) {

            throw new UnsupportedOperationException("already specified useForNull");

        }

        public Joiner skipNulls() {

            throw new UnsupportedOperationException("already specified useForNull");

        }

    };

}

public Joiner skipNulls() {

    return new Joiner(this) {

     //返回新建Joiner 检查列表里是否有null 有null跳过

        public  A appendTo(A appendable, Iterator parts) throws IOException {

            Preconditions.checkNotNull(appendable, "appendable");

            Preconditions.checkNotNull(parts, "parts");

            Object part;

            while(parts.hasNext()) {

                part = parts.next();

                if (part != null) {

                    appendable.append(Joiner.this.toString(part));

                    break;

                }

            }

            while(parts.hasNext()) {

                part = parts.next();

//不等于null 添加仅

                if (part != null) {

                    appendable.append(Joiner.this.separator);

                    appendable.append(Joiner.this.toString(part));

                }

            }

            return appendable;

        }

        public Joiner useForNull(String nullText) {

            throw new UnsupportedOperationException("already specified skipNulls");

        }

        public Joiner.MapJoiner withKeyValueSeparator(String kvs) {

            throw new UnsupportedOperationException("can't use .skipNulls() with maps");

        }

    };

}

Joiner joiner = Joiner.on("; ").skipNulls();

return joiner.join("Harry", null, "Ron", "Hermione");

3.join

public final String join(@Nullable Object first, @Nullable Object second, Object... rest) {

    return this.join(iterable(first, second, rest));

//将元素变成迭代器放入

}

public final String join(Iterable<?> parts) {

    return this.join(parts.iterator());

}

public final String join(Iterator<?> parts) {

    return this.appendTo(new StringBuilder(), parts).toString();

//调用 appendTo串联起来,拼接字符串

}

public final String join(Object[] parts) {

    return this.join((Iterable)Arrays.asList(parts));

}

public final StringBuilder appendTo(StringBuilder builder, Iterator<?> parts) {

    try {

        this.appendTo((Appendable)builder, (Iterator)parts);

        return builder;

    } catch (IOException var4) {

        throw new AssertionError(var4);

    }

}

public final StringBuilder appendTo(StringBuilder builder, Object[] parts) {

    return this.appendTo((StringBuilder)builder, (Iterable)Arrays.asList(parts));

}

public final StringBuilder appendTo(StringBuilder builder, @Nullable Object first, @Nullable Object second, Object... rest) {

    return this.appendTo(builder, iterable(first, second, rest));

}

相关文章

  • Guava | Joiner

    2017-03-27

  • Guava——Joiner

    将一个字符串序列用分隔符连接起来。 1.构造函数 只对外提供静态Joiner.on方法来构造joiner publ...

  • guava之Joiner

    Joiner相当于spliter的反操作,可以将数组或者集合等可遍历的数据转换成使用分隔符连接的字符串 Joine...

  • Guava-Joiner

    Joiner 只提供两个静态方法,参数是分隔符。静态方法内部new一个自身对象,返回该对象,之后可以通过该对象访问...

  • Guava学习

    Guava学习笔记之Joiner ,Strings,Splitter 工具实例 一.Strings 二,Joine...

  • 002 Guava | Utilities

    本节介绍Guava的utilities中的工具包, Joiner Spliter Preconditions Ob...

  • Guava学习之Joiner

    本文是对 Guava 中 Joiner 的学习介绍。欢迎加入学习项目: LearningGuava。 使用示例 以...

  • Guava学习笔记(3)Joiner

    Joiner的作用 常见用法 源码解析 Joiner对象的构造 Joiner为了保证是线程安全的,它的每一个实例都...

  • Guava之Joiner和Spliter

    Joiner 做连接 Spliter 做分解

  • [Guava] 1 Joiner和Spliter

    1 概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会...

网友评论

      本文标题:Guava——Joiner

      本文链接:https://www.haomeiwen.com/subject/vryzlqtx.html