【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解
【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!
博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!
吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里…
一、文章序言
本篇用案例的形式学习一下Java 8 新特性|Collectors.joining()
业务场景:在项目中我们常常要对list集合的数据做一些字符串拼接/处理等相关操作
常见的案例如下
/**
* @program: RecursionAlgorithm
* @description: Java 8 新特性|Collectors.joining()
* @author: 辰兮要努力
* @create: 2021-10-02 11:01
*/
public class StreamDemo {
public static void main(String[] args) {
List<String> list = Arrays.asList("辰兮","2021","要努力");
String result= list.stream().collect(Collectors.joining());
System.out.println(result);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
输出结果
辰兮2021要努力
- 1
Collectors.joining() 方法以遭遇元素的顺序拼接元素。我们可以传递可选的拼接字符串、前缀和后缀
分隔符:delimiter
前缀:prefix
后缀:suffix
二、案例实践
来一起学习一下相关的Collectors.joining() 方法
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @program: RecursionAlgorithm
* @description: Java 8 新特性|Collectors.joining()
* @author: 辰兮要努力
* @create: 2021-10-02 11:01
*/
public class StreamDemo {
public static void main(String[] args) {
final String[] strings = {"x", "y", "z"};
Stream<String> stream1 = Stream.of(strings);
Stream<String> stream2 = Stream.of(strings);
Stream<String> stream3 = Stream.of(strings);
Stream<String> stream4 = Stream.of(strings);
Stream<String> stream5 = Stream.of(strings);
// 拼接成 [x, y, z]
String result1 = stream1.collect(Collectors.joining(", ", "[", "]"));
// 拼接成 x | y | z
String result2 = stream2.collect(Collectors.joining(" | ", "", ""));
// 拼接成 x -> y -> z]
String result3 = stream3.collect(Collectors.joining(" -> ", "", ""));
//[x, y, z]
System.out.println(result1);
//x | y | z
System.out.println(result2);
//x -> y -> z
System.out.println(result3);
//[x.y.z]
String result4 = stream4.collect(Collectors.joining(".","[","]"));
//xyz
// String result4 = stream4.collect(Collectors.joining(""));
System.out.println(result4);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
输出结果
[x, y, z]
x | y | z
x -> y -> z
[x.y.z]
- 1
- 2
- 3
- 4
如上案例均可以在自己电脑实践
Java 8 流 ( stream ) 收集器 ( Collectors ) 中的 joining() 方法。该方法会返回一个 Collectors 实例,方便在流收集器上的链式操作
源码如下
/**
* Returns a {@code Collector} that concatenates the input elements,
* separated by the specified delimiter, with the specified prefix and
* suffix, in encounter order.
*
* @param delimiter the delimiter to be used between each element
* @param prefix the sequence of characters to be used at the beginning
* of the joined result
* @param suffix the sequence of characters to be used at the end
* of the joined result
* @return A {@code Collector} which concatenates CharSequence elements,
* separated by the specified delimiter, in encounter order
*/
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);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
希望如上的案例能帮助大家了解Collectors.joining() 的相关操作,更好的处理项目中不同的业务场景
小伙伴们国庆假期愉快!爱生活、爱自己、爱你所在的每一天!
非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!
2021年10月2日11:52:31 愿你们奔赴在自己的热爱里!
文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。
原文链接:blessing.blog.csdn.net/article/details/120584655
- 点赞
- 收藏
- 关注作者
评论(0)