1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Collectors.joining()

Collectors.joining()

时间:2018-12-15 11:55:37

相关推荐

Collectors.joining()

Collectors.joining()

Java 8流的新类java.util.stream.Collectors实现了java.util.stream.Collector接口,同时又提供了大量的方法对流 (stream) 的元素执行mapandreduce操作,或者统计操作。

Collectors.joining()方法用某个指定的拼接**字符串**把所有元素拼接成一个字符串,并添加可选的前缀和后缀

joiningExample代码

@Testpublic void joiningExample() {List<String> list = Arrays.asList("1", "2", "3", "4");String defult = list.stream().collect(Collectors.joining());String midAppend = list.stream().collect(Collectors.joining(","));String allAppend = list.stream().collect(Collectors.joining(",", "(", ")"));System.out.println(defult);System.out.println(midAppend);System.out.println(allAppend);}

joiningExample结果

12341,2,3,4(1,2,3,4)

注意

针对字符串进行Join操作,不支持其他形式的Join,没有做全支持仅仅是对字符串进行连接操作 底层也是使用StringBuilder进行append操作最后使用StringBuilder的toString返回拼串底层大量使用量lambda表达式以及语法糖,对于刚学习这些的人看着异常吃力但沉下心提高很大

Joining源码

返回一个Collector,该Collector按遇到顺序将输入元素连接到一个String。

//Returns a Collector that concatenates the input elements into a String, in encounter order.public static Collector<CharSequence, ?, String> joining() {return new CollectorImpl<CharSequence, StringBuilder, String>(StringBuilder::new, StringBuilder::append,(r1, r2) -> {r1.append(r2); return r1; },StringBuilder::toString, CH_NOID);}

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);}

看着很吃力吧,沉下心,收获也是很大的

一点唠叨:

相对于Collectors.averagingDouble()来说,方法体只执行一次。相对于Collectors.averagingDouble()来说,方法体做出了优化相对于Collectors.averagingDouble()来说,这个没有坑……为什么这么提Collectors.averagingDouble(),最好看一下—>averagingDouble因为Collectors.averagingDouble()有坑,有坑,有坑

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。