栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将字符串拆分为字符串流?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将字符串拆分为字符串流?

Arrays.stream
/
String.split

由于

String.split
返回数组
String[]
,因此我始终建议您
Arrays.stream
使用流式处理数组的规范用法。

String input = "dog,cat,bird";Stream<String> stream = Arrays.stream(input.split( "," ));stream.forEach(System.out::println);

Stream.of
/
String.split

Stream.of
是一个
varargs
方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题。

Stream<String> stream = Stream.of(input.split(","));     // works, but is non-idiomaticStream<String> stream = Stream.of("dog", "cat", "bird"); // intended use case

Pattern.splitAsStream

Pattern.compile(",").splitAsStream(string)
具有直接流式传输而不是创建中间数组的优势。因此,对于大量的子字符串,这可以带来性能上的好处。另一方面,如果定界符很小,即单个文字字符,则
String.split
实现将通过快速路径而不是使用正则表达式引擎。因此,在这种情况下,答案并不简单。

Stream<String> stream = Pattern.compile(",").splitAsStream(input);

如果流发生在另一个流内部,例如,

.flatMap(Pattern.compile(pattern)::splitAsStream)
存在的优势是模式仅需分析一次,而不是针对外部流的每个字符串进行分析。

Stream<String> stream = Stream.of("a,b", "c,d,e", "f", "g,h,i,j")    .flatMap(Pattern.compile(",")::splitAsStream);

这是形式为方法的引用的属性

expression::name
,将在创建功能接口的实例时对表达式进行评估并捕获结果,如[System.out ::println的等效lambda表达式中所述。使用方法引用而不是lambda表达式引发NullPointerException



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号