博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java8-06-自定义Collector-JoinCollector
阅读量:5967 次
发布时间:2019-06-19

本文共 2163 字,大约阅读时间需要 7 分钟。

[TOC]

声明

这一系列文章旨在帮助大家理解 Collector 的执行流程,至于实现的是否高效、是否优雅、是否合理等暂且不论。


上一篇文章分享了 Collector 的执行流程。现在就来自定义一个最简单的 JoinCollector 看看。

若对 Collector 的各个流程有疑问请移驾此处:

简单实现

static class JoinClollector implements Collector
{ private String seperator = ","; @Override public Supplier
supplier() { return () -> new StringBuilder(); } @Override public BiConsumer
accumulator() { return (sb, str) -> { if (StringUtils.isNotBlank(str)) { sb.append(str).append(seperator); } }; } @Override public BinaryOperator
combiner() { return (l, r) -> l.append(r); } @Override public Function
finisher() { return c -> { String ret = c.toString(); if (ret.endsWith(seperator)) { return ret.substring(0, ret.length() - 1); } return ret; }; } @Override public Set
characteristics() { return new HashSet<>(); }}

简化代码

static class JoinClollector2 implements Collector
{ private String seperator = ","; @Override public Supplier
supplier() { return StringBuilder::new; } @Override public BiConsumer
accumulator() { return (sb, str) -> { if (StringUtils.isNotBlank(str)) { sb.append(str).append(seperator); } }; } @Override public BinaryOperator
combiner() { return StringBuilder::append; } @Override public Function
finisher() { return c -> { String ret = c.toString(); if (ret.endsWith(seperator)) { return ret.substring(0, ret.length() - 1); } return ret; }; } @Override public Set
characteristics() { return Collections.emptySet(); }}

使用自定义Collector

@Testpublic void test() {    String str = Lists.newArrayList("a", "B", "c", "d")            .stream().collect(new JoinClollector());    System.out.println(str);}

博客源码

转载地址:http://dpqax.baihongyu.com/

你可能感兴趣的文章
傲不可长,欲不可纵,乐不可极,志不可满——提高个人修养
查看>>
linux系统增加swap容量的方法
查看>>
后台调用gps
查看>>
HTML5标签的语义认知和理解(1)
查看>>
MySQL日志功能详解(2)
查看>>
HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?
查看>>
linux之权限之隐藏权限
查看>>
XDCTF成长记录
查看>>
Linux系统中的文本处理工具
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
telnet :No route to host
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
第四节课作业
查看>>
EasyUI Calendar 日历
查看>>
unix 环境高级编程
查看>>
为数据库建立索引
查看>>