string拆分为int_拆分为流

string拆分为int

我正在为我工​​作的公司准备正则表达式教程更新。 原始教程创建于2012年,从那时起Java发生了一点变化。 有新的Java语言版本,尽管Java中的正则表达式处理仍不完善(nb。它仍使用非确定性FSA),但仍有一些新功能。 我在上一篇文章中针对新的Java 9方法写过一些文章。 但是这一次,我必须查看自2012年以来的所有新功能。

从1.8开始的splitAsStream

这样,我在java.util.regex.Pattern类中找到了splitAsStream 。 它与方法split几乎相同,除了返回的不是String对象的数组而是流。 最简单的实现是

public Stream<String> splitAsStream(final CharSequence input) {return Arrays.stream(p.split(input));
}

当图书馆试图跟上新风和支持潮流时,我可以看到许多这样的实现。 没有什么比将数组或列表从某些现有功能转换为流更简单了。

但是,解决方案是低于标准,失去了流的本质:仅执行所需的工作。 我的意思是,“应仅在处理流时执行所需的工作”,而不是在开发人员将数组或集合返回方法转换为返回一个流的情况下进行。 流以一种精简的方式及时交付结果。 您会看到我们有多少个懒惰的表情。

JDK实现利用了流的性能优势。 如果您查看源代码,您会立即看到实现比前面提到的简单解决方案稍微复杂一些。 由于我没有时间去研究实现,也许没有兴趣,所以我使用了另一种方法来证明实现尊重流的惰性。

该方法的参数是CharSequence而不是StringCharSequenceString实现的接口,但我们也可以实现它。 为了感觉到这种情况下的流实现多么懒惰,我创建了一个CharSequence实现,它通过调试打印出了方法调用。

class MyCharSequence implements CharSequence {private String me;MyCharSequence(String me) {this.me = me;}@Overridepublic int length() {System.out.println("MCS.length()=" + me.length());return me.length();}@Overridepublic char charAt(int index) {System.out.println("MCS.charAt(" + index + ")=" + me.charAt(index));return me.charAt(index);}@Overridepublic CharSequence subSequence(int start, int end) {System.out.println("MCS.subSequence(" + start + "," + end + ")="+ me.subSequence(start, end));return me.subSequence(start, end);}
}

有了此类,我可以执行以下简单的main方法:

public static void main(String[] args) {Pattern p = Pattern.compile("[,\\.\\-;]");final CharSequence splitIt =new MyCharSequence("one.two-three,four;five;");p.splitAsStream(splitIt).forEach(System.out::println);
}

输出显示该实现确实很懒:

MCS.length()=24
MCS.length()=24
MCS.length()=24
MCS.charAt(0)=o
MCS.charAt(1)=n
MCS.charAt(2)=e
MCS.charAt(3)=.
MCS.subSequence(0,3)=one
one
MCS.length()=24
MCS.charAt(4)=t
MCS.charAt(5)=w
MCS.charAt(6)=o
MCS.charAt(7)=-
MCS.subSequence(4,7)=two
two
MCS.length()=24
MCS.charAt(8)=t
MCS.charAt(9)=h
MCS.charAt(10)=r
MCS.charAt(11)=e
MCS.charAt(12)=e
MCS.charAt(13)=,
MCS.subSequence(8,13)=three
three
MCS.length()=24
MCS.charAt(14)=f
MCS.charAt(15)=o
MCS.charAt(16)=u
MCS.charAt(17)=r
MCS.charAt(18)=;
MCS.subSequence(14,18)=four
four
MCS.length()=24
MCS.charAt(19)=f
MCS.charAt(20)=i
MCS.charAt(21)=v
MCS.charAt(22)=e
MCS.charAt(23)=;
MCS.subSequence(19,23)=five
five
MCS.length()=24

实现继续进行,当它找到流的第一个元素时,将其返回。 我们可以处理字符串“ one”,并且仅当我们返回其他元素时,它才能处理其他字符。 为什么必须在开始时调用方法长度3次? 我不知道。 也许它想非常确定序列的长度不会发生神奇的变化。

士气

这是一个很好的示例,说明如何扩展库以支持流。 如果应用程序只是将集合或数组转换为第一个版本中的流,这不是问题,但是如果分析表明性能可以收回投资,则应实现真正的流惰性。

边注

CharSequence的实现是可变的,但是处理要求它保持恒定,否则结果不确定。 我可以确认。

下周,我将展示splitAsStream的可能用法,该splitAsStream利用的功能是它在字符序列中读取的内容不会超出所需的范围。

翻译自: https://www.javacodegeeks.com/2017/11/split-as-stream.html

string拆分为int

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 type -- 显示指定命令的类型

文章目录一、命令介绍二、命令格式三、命令类型四、常用选项五、命令示例&#xff08;一&#xff09;查看命令的类型&#xff08;二&#xff09;显示外部命令的绝对路径一、命令介绍 type 命令用来显示指定命令的类型&#xff0c;判断给出的指令是内部指令还是外部指令。 二、…

python 查找算法_python快速查找算法应用实例

文实例讲述了Python快速查找算法的应用&#xff0c;分享给大家供大家参考。具体实现方法如下&#xff1a;import randomdef partition(list_object,start,end):random_choice start#random.choice(range(start,end1))#把这里的start改成random()效率会更高些x list_object[ra…

驾校约车html网站源码,html5首汽约车微信感恩活动页面模板

html5整屏滚动css3特效&#xff0c;各种c3特效&#xff0c;手机端支持各种分辨率&#xff0c;感恩活动微信页面模板下载。资源下载此资源下载价格为4D币&#xff0c;请先登录资源文件列表codedown123-0831-42/css/animate.min.css , 61353codedown123-0831-42/css/reset.css , …

java+解析未知json_在Java中解析JSON时如何忽略未知属性– Jackson @JsonIgnoreProperties注释示例...

java解析未知json使用Jackson API在Java中解析JSON时的常见问题之一是&#xff0c;当您的JSON包含未知属性&#xff08;即您的Java类没有对应于所有JSON属性的所有字段&#xff09;时&#xff0c;该操作将失败。 例如&#xff0c;如果您正在使用REST Web服务中的JSON&#xff0…

双非计算机考研推荐学校传菜电梯,22考研双非院校排名Top100,前3名竟然是这几所!...

原标题&#xff1a;22考研双非院校排名Top100&#xff0c;前3名竟然是这几所&#xff01;大家好&#xff01;这里考个研吧&#xff01;近年来&#xff0c;很多双非高校发展进步很快&#xff0c;实力超过很多末流211大学&#xff01;国家也实行了双一流、学科评估等&#xff0c;…

按压缩格式整理打包(解包)和压缩(解压)命令

文章目录一、zip 格式&#xff08;一&#xff09;使用命令 zip 压缩文件&#xff08;二&#xff09;使用命令 unzip 解压 zip 包二、tar 格式&#xff08;一&#xff09;打包文件&#xff08;二&#xff09;解包 tar 包三、tar.gz 格式方式一&#xff1a;利用已经打包好的tar文…

4线电子围栏安装示意图_知识积累|周界防护-脉冲电子围栏的安装

如今人们对于住宅需求早已今非昔比&#xff0c;不但需要足够大的空间&#xff0c;而且对于住宅所处位置是否交通便利&#xff0c;环境如何&#xff0c;光照情况都有要求&#xff0c;但是最关注的问题还是住宅的安全问题。如今的社会科技发达&#xff0c;不法分子的手段也层出不…

非对称加密 公钥私钥_选择Java加密算法第3部分–公钥/私钥非对称加密

非对称加密 公钥私钥抽象 这是涵盖Java加密算法的三部分博客系列的第3部分。 该系列涵盖如何实现以下功能&#xff1a; 使用SHA–512散列 使用AES–256的单密钥对称加密 RSA–4096 这第三篇文章详细介绍了如何实现非对称的RSA-4096公/私钥加密。 让我们开始吧。 免责声明 …

Linux 命令之 compress -- unix 档案压缩命令

文章目录一、命令介绍二、常用选项三、命令示例&#xff08;一&#xff09;压缩文件&#xff08;二&#xff09;解压文件一、命令介绍 compress 命令使用“Lempress-Ziv”编码压缩数据文件。compress 是一个相当古老的 unix 档案压缩程序&#xff0c;文件经它压缩后&#xff0…

计算机电源风扇维修,电脑电源开关维修和电源风扇加油图解全过程.doc

窗体顶端窗体底端电源开关维修及电源风扇加油图解全过程2010-05-06 17:56:19 来源&#xff1a;计算机故障查询网 浏览&#xff1a;804次-今天一朋友拿了部联想电脑(虽然俺不喜欢,但每个人有自己的爱好,就没说啥)给我,说让我帮他的电脑体检一下,说开不了机于是开展程序化工作,朋…

内部收益率irr_介绍一个神器,内部收益率IRR

内部回报率IRR这个概念&#xff0c;艾米姐在很多地方都讲到了。可以这么说&#xff0c;任何的理财产品&#xff0c;都可以用这个概念来测算一下收益到底如何。听起来IRR确实很强大啊。那它到底是个什么东东呢&#xff1f;今天就来说一说。一、什么是内部收益率IRR&#xff1f;这…

如何在Java中处理ConcurrentModificationException? 在循环中从ArrayList中删除元素时要当心...

从Java中从ArrayList中删除元素时常见的问题之一是ConcurrentModificationException。 如果您对索引使用经典的for循环或增强的for循环&#xff0c;并尝试使用remove()方法从ArrayList中remove()元素&#xff0c;则将获得C oncurrentModificationException但如果使用Iterator的…

Linux 命令之 zip -- 压缩文件

文章目录一、命令介绍二、常用选项三、命令示例&#xff08;一&#xff09;压缩指定目录及其包含的内容&#xff08;二&#xff09;压缩指定目录及其包含的内容&#xff0c;并选择压缩效率一、命令介绍 zip 命令可以将一个或多个文件放入一个压缩存档中&#xff0c;文件经它压…

南安职业中专学校计算机专业,南安职专:国家级重点职业中专学校

原标题&#xff1a;南安职专:国家级重点职业中专学校学校创办于1984年&#xff0c;现有教职工252人&#xff0c;在校生4152人。2004年被首批重新确认为国家级重点职业中专学校&#xff0c;2012年9月被确认为国家中等职业教育改革发展示范学校建设项目校。2016年1月份被确认为福…

python eel 多线程_Python 基础

input() 用于输入print() 用于输出数据类型:1、整数 、浮点数‘ / ‘ 表示除 得出的结果一定是个浮点型.‘ // ‘ 表示除 得出的结果一定是整数.(如果是小数会自动取整)‘ % ‘ 表示除 取余数(自动取得小数点后面的数)2、字符串(‘’ / “”)可以使用 ‘ \ ‘ 转义, r表示内部的…

Linux 命令之 unzip -- 解压缩文件

文章目录一、命令介绍二、命令选项三、命令示例&#xff08;一&#xff09;解压缩文件&#xff08;二&#xff09;将指定压缩文件解压到指定目录下&#xff08;三&#xff09;查看压缩包内的文件列表及有关的压缩信息&#xff08;四&#xff09;验证压缩文件是否完整一、命令介…

网络研讨室_网络研讨会:Java 9的第一印象–构建可伸缩企业应用程序的新方法...

网络研讨室在此网络研讨会上听我们对新Java版本的一些初步想法 关于Java 9的新版本&#xff0c;有很多宣传。将Java平台迁移到模块上&#xff0c;由Mark Reinhold领导的专门团队进行了近十年的艰苦工作。 除了备受期待的Project Jigsaw&#xff0c;此版本还包含许多其他令人兴…

react 日历组件_anujs1.5.1支持React.Suspense与lazy

React16是一个实验版本&#xff0c;除了测试它的新fiber架构外&#xff0c;还添加了大量新功能。其他React.Suspense与React.lazy就是重磅中的重磅。随着前端的APP化&#xff0c;不断集成功能&#xff0c;页面越来越大&#xff0c;bundle size以MB为单位&#xff0c;我们需要拆…

计算机永远无法处理日语所具有的暧昧性,计算机永远无法处理日语所具有的暧昧性。( )...

计算机永远无法处理日语所具有的暧昧性。( )更多相关问题[单选] 分体式变频空调器的节流装置选用的是()[单选] 当制冷压缩机效率降低时&#xff0c;其()[判断题] 流体以层流流态换热强度要强于湍流流态强度[单选] 一次回风式空调系统的调节方法&#xff0c;是控制()&#xff0c…

Linux 命令之 xz -- POSIX 平台的具有高压缩率的压缩工具

文章目录一、命令介绍二、常用选项三、命令示例&#xff08;一&#xff09;压缩文件&#xff0c;压缩成功后删除原文件&#xff08;二&#xff09;解压文件&#xff0c;且不删除原文件&#xff08;三&#xff09;根据自定义的压缩率压缩文件&#xff08;四&#xff09;借助 xar…