java8实战:使用流收集数据之toList、joining、groupBy(多字段分组)(1)

return new CollectorImpl<CharSequence, StringBuilder, String>(

StringBuilder::new, StringBuilder::append,

(r1, r2) -> { r1.append(r2); return r1; },

StringBuilder::toString, CH_NOID);

}

  • Supplier< A> supplier()

其函数为StringBuilder::new,即通过该方法创建一个StringBuilder方法,作为累积器的初始值。

  • BiConsumer<A, T> accumulator

累积器:StringBuilder::append,即会对流中的元素执行追加。

  • BinaryOperator< A> combiner

组合器,也是调用append方法,进行字符串的规约。

  • Function<A,R> finisher

转换器:由于累积器返回的最终对象为StringBuilder,并不是目标String类型,故需要调用StringBuilder#toString方法进行转换

  • Set< Characteristics> characteristics

无任何行为。

从上面的函数定义我们可以得出该方法的作用:针对字符串流,会对流中的元素执行字符的追加动作,流元素之间没有分隔符号,示例如下:

在这里插入图片描述

2.2 joining(CharSequence delimiter)

public static Collector<CharSequence, ?, String> joining(CharSequence delimiter) {

return joining(delimiter, “”, “”);

}

public static Collector<CharSequence, ?, String> joining(CharSequence delimiter,

CharSequence prefix,

CharSequence suffix) {

return new CollectorImpl<>(

() -> new StringJoiner(delimiter, prefix, suffix),

StringJoiner::add, StringJoiner::merge,

StringJoiner::toString, CH_NOID);

}

  • Supplier< A> supplier()

其函数为() -> new StringJoiner(delimiter, prefix, suffix),累积器的初始值为StringJoiner。

  • BiConsumer<A, T> accumulator

累积器:StringJoiner::append,即会对流中的元素执行追加。

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值