游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

用Java代码对字符串进行切割,这么写性能提升2倍

  今天给大家介绍一个小知识点,但是会非常的实用,就是平时我们写Java代码的时候,如果要对字符串进行切割,我们巧妙的运用一些技巧,可以把性能提升510倍。下面不说废话,直接来给大家上干货!
  工作中常用的split()切割字符串效率高吗?
  首先,我们用下面的一段代码,去拼接出来一个用逗号分隔的超长字符串,把从0开始一直到9999的每个数字都用逗号分隔,拼接成一个超长的字符串,以便于我们可以进行实验,代码如下所示:publicclassStringSplitTest{publicstaticvoidmain(String〔〕args){Stringstringnull;StringBufferstringBuffernewStringBuffer();intmax10000;for(inti0;imax;i){stringBuffer。append(i);if(imax1){stringBuffer。append(,);}}stringstringBuffer。toString();}}
  接着我们可以用下面的代码来测试一下,如果用最基础的split方法来对超长字符串做切割,循环切割1w次,要耗费多长时间,看如下代码测试:publicclassStringSplitTest{publicstaticvoidmain(String〔〕args){Stringstringnull;StringBufferstringBuffernewStringBuffer();intmax10000;for(inti0;imax;i){stringBuffer。append(i);if(imax1){stringBuffer。append(,);}}stringstringBuffer。toString();longstartSystem。currentTimeMillis();for(inti0;i10000;i){string。split(,);}longendSystem。currentTimeMillis();System。out。println(endstart);}}
  经过上面代码的测试,最终发现用split方法对字符串按照逗号进行切割,切割1w次是耗时2000多毫秒,这个不太固定,大概是2300毫秒左右。
  JDK提供字符串切割工具类StringTokenizer
  接着给大家介绍另外一个性能更加好的专门用于字符串切割的工具类,就是StringTokenizer,这个工具是JDK提供的,也是专门用来进行字符串切割的,他的性能会更好一些,我们可以看下面的代码,用他来进行1w次字符串切割,看看具体的性能测试结果如何:importjava。util。StringTokenizer;publicclassStringSplitTest{publicstaticvoidmain(String〔〕args){Stringstringnull;StringBufferstringBuffernewStringBuffer();intmax10000;for(inti0;imax;i){stringBuffer。append(i);if(imax1){stringBuffer。append(,);}}stringstringBuffer。toString();longstartSystem。currentTimeMillis();for(inti0;i10000;i){string。split(,);}longendSystem。currentTimeMillis();System。out。println(endstart);startSystem。currentTimeMillis();StringTokenizerstringTokenizernewStringTokenizer(string,,);for(inti0;i10000;i){while(stringTokenizer。hasMoreTokens()){stringTokenizer。nextToken();}stringTokenizernewStringTokenizer(string,,);}endSystem。currentTimeMillis();System。out。println(endstart);}}
  大家看上面的代码,用StringTokenizer可以通过hasMoreTokens()方法判断是否有切割出的下一个元素,如果有就用nextToken()拿到这个切割出来的元素,一次全部切割完毕后,就重新创建一个新的StringTokenizer对象。
  这样连续切割1w次,经过测试之后,会发现用StringTokenizer切割字符串1w次的耗时大概是1900毫秒左右。
  大家感觉如何?是不是看到差距了?换一下切割字符串的方式,就可以让耗时减少400500ms,性能目前已经可以提升20了。
  手把手带你实现一个更高效的字符串切割工具类
  接着我们来自己封装一个切割字符串的函数,用这个函数再来做一次字符串切割看看,大家先看字符串切割函数的代码:privatestaticvoidsplit(Stringstring){StringremainStringstring;intstartIndex0;intendIndex0;while(true){endIndexremainString。indexOf(,,startIndex);if(endIndex0){break;}remainString。substring(startIndex,endIndex);startIndexendIndex1;}}
  上面那段代码是我们自定义的字符串切割函数,大概意思是说,每一次切割都走一个while循环,startIndex初始值是0,然后每一次循环都找到从startIndex开始的下一个逗号的index,就是endIndex,基于startIndex和endIndex截取一个字符串出来,然后startIndex可以推进到本次endIndex1即可,下一次循环就会截取下一个逗号之前的子字符串了。
  下面我们用用上述自定义的切割函数再次测试一下,如下代码:importjava。util。StringTokenizer;publicclassStringSplitTest{publicstaticvoidmain(String〔〕args){Stringstringnull;StringBufferstringBuffernewStringBuffer();intmax10000;for(inti0;imax;i){stringBuffer。append(i);if(imax1){stringBuffer。append(,);}}stringstringBuffer。toString();longstartSystem。currentTimeMillis();for(inti0;i10000;i){string。split(,);}longendSystem。currentTimeMillis();System。out。println(endstart);startSystem。currentTimeMillis();StringTokenizerstringTokenizernewStringTokenizer(string,,);for(inti0;i10000;i){while(stringTokenizer。hasMoreTokens()){stringTokenizer。nextToken();}stringTokenizernewStringTokenizer(string,,);}endSystem。currentTimeMillis();System。out。println(endstart);startSystem。currentTimeMillis();for(inti0;i10000;i){split(string);}endSystem。currentTimeMillis();System。out。println(endstart);}privatestaticvoidsplit(Stringstring){StringremainStringstring;intstartIndex0;intendIndex0;while(true){endIndexremainString。indexOf(,,startIndex);if(endIndex0){break;}remainString。substring(startIndex,endIndex);startIndexendIndex1;}}}总结
  经过上述代码测试之后,我们自己写的字符串切割函数的耗时大概是在1000ms左右,相比较之下,比String。split方法的性能提升了2倍多,比StringTokenizer的性能也提升了2倍,如果要是字符串更大呢?其实字符串越大,性能差距就会越多,可能会呈更大的倍数提升我们的性能!

新浪微博诉字节跳动不正当竞争案宣判,字节跳动将提起上诉来源:读特5月27日,据央广网报道,有关新浪微博诉字节跳动不正当竞争案,北京市海淀区人民法院近期进行一审宣判,依据民事判决书显示,字节跳动通过类似复制粘贴的方式对新浪微博……外卖费率改革一边是海水,一边是火焰作者:二毛编辑:原野商业的本质是什么?美国通用电气公司史上最年轻的CEO杰克韦尔奇,在其力作《商业的本质》中曾给出回答:商业是探求真实、建立互信的过程。……还有多少人用三星S9的?为什么?谢邀!目前来看使用三星s9plus的用户还是不在少数的原因,就在于这款手机的均衡程度其实是相对比较高的,我们说在s8的前提之下升级,算不上是巨大,但确实弥补了很多缺失。……客户说买到假电脑,我想问是谁设计的?难怪五六千买的电脑会卡电脑卡顿是我们较为常见的一种故障现象,它主要与电脑的配置有关,一般来说,电脑的配置越高,电脑运行就越流畅,电脑配置越低,电脑运行就越慢,除了配置之外,电脑的速度与电脑的系统、清……如果中国失去华为会怎样?2018年以来,美国以倾国之力来猎杀华为,不断升级制裁措施,美国这种近乎无耻的无限追溯,基本上就是杀不死华为誓不罢休的节奏,而同时认为中国可用的反制措施有限,从而一再打压中国科……微信被人深夜4次登录怎么查对方,要报警吗?这个应该查不到吧,建议尽快修改密码哦。想想会不会是自己的朋友亲戚呢?或者女朋友男朋友什么的〔呲牙〕〔呲牙〕这是你的问题,现在微信在陌生手机登录需要现在登录微信的验证,而验……为什么我感受不到1500元的手机比四五千的差?就是小青年玩游戏的事,不玩游戏的人,啥价位的也一样等你买了四五千的手机后就感受到了我干过PCB板电镀的工作,就是手机啊电脑啊里面的电路板的加工工作。同一条生产线,上……警告!亚马逊明确禁止的几种站外引流为什么要做站外引流说到站外引流,那必须得先说站内流量分析了,亚马逊站内流量主要由几大部分构成:关键词搜索、分类查找、促销活动、PPC点击和站内广告。简单来说影响站内流量的……无现金化有隐藏的风险吗?为何感觉发达国家都不用支付宝和微信支他们的信条就是自由,他们怀疑电子货币会泄露资产和行动隐私,所以多数人不用。为了所谓自由,性命和爱情都不会要的,这次疫情又因此灭了一批人。这就是弯道超车,中国在现金支付方面……短视频制作相机的选择知多少网上天天很多人在分析短视频,到底该用什么摄录设备去拍,有专业人士给你罗列了一大堆,也有很多讲课老师告诉你说手机就可以搞定。其实作为一个从1996年开始玩相机的我,直到现在所有的……德马垂直输送家族齐上阵,按需构建灵活的3D跨楼层解决方案德马垂直输送家族齐上阵,按需构建灵活的3D跨楼层解决方案目前,越来越多的商业物流中心和制造企业智能工厂的建设从之前摊大饼模式,逐渐朝多层、高层的集约化方向演变,以更有效地……3000元以内,目前这4部手机值得买,快看看你用上了哪部?3000元以内,目前这4部手机值得买,快看看你用上了哪部?第一部:一加9R相信大家对一加这个品牌应该不会陌生了吧?跟小米一样,走性价比路线,这几年凭借着超高的性价比……
罗技PROX评测大师级别的游戏耳机,极致游戏以声致胜作为一名游戏爱好者,在打游戏时我格外关注声音,因为就像制作视频一样,大多数的人往往会重视频而轻音频,以至于错过了更好的游戏体验。殊不知,清晰且高还原度的声音,能够拉高一大截游戏……北斗导航ampampquot收官之星ampampquot成功北斗导航最后一颗收官之星的成功发射再次激发了人民的爱国主义精神,然后很多网友开始问如何使用北斗导航?我们想支持它。几天前,我还看到有人在某宝上出售一些有关北斗的软件,说这……视觉AI构建智慧教育新生态,虹软开放平台亮相教装展4月23日,第79届中国教育装备展示会(以下简称教装展)在厦门国际会展中心正式拉开帷幕。作为智慧教育行业的市场风向标,本届教装展呈现了大量业内最前沿的技术、产品和解决方案,超过……两过稻城,不经意间,见到了此行最美的秋天从川西去亚丁,稻城是必经之地。这一次去亚丁,在稻城住了两个晚上,第一次是从格聂山中出来,傍晚到稻城住下,第二天一早去了亚丁。第二次是傍晚从亚丁出来,又住在了稻城。虽然两次……基于SpringbootBeetlShiroRedis搭建J一款Java快速开发平台,基于Springboot2。X、Beetl、MybatisPlus、Shiro、Redis、JWT等众多优秀框架开发而成,包含了代码生成让您一键生成出……2022年!本田激进宣布在欧洲停售燃油车日前,据外媒报道,本田汽车计划于2022年在欧洲停售纯汽油柴油车型,取而代之的是纯电动以及混动车型。本田这一目标过于激进,但这是属实的信息,本田欧洲高管也给出了理由。本田……美日企业撤出中国,生产成本恐将提高,老百姓买不到便宜电脑了?Hello大家好,我是兼容机之家的小牛!近几天,最火热的新闻莫过于美日企图将制造业回流和撤出中国。今天小牛就跟大家聊一聊,此举对我们日常生活,尤其电脑价格会有什么影响?毕……8万级车的配置天花板?聊宝骏RS3,年轻人的第一台SUV?这几年内卷一词似乎风靡了各行各业,不管是处在一线的销售行业,还是处在行业中上游的职位,都存在着不同程度的内卷现象。汽车产业也没能幸免,厂商们新车的速度是与日俱增,市面上再没有一……物联网万亿金矿开启,科技巨头逐鹿产业智能化文杨剑勇近年来,智能化浪潮席卷全球,为各行各业创新释放活力。身处科技前沿的科技巨头,则是推动全球智能化浪潮背后中坚力量。需要指出的是,以人工智能、物联网、云计算、边缘智能……在沪就地过年,吉利汽车加推1000万春节福利临近年关,往年火热的春运、抢票话题都因今年疫情影响而减弱,反而近期国家及各地政府发布的就地过年、非必要不返乡倡议甚嚣尘上。虽然目前大多数还停留在文件倡议上,但也有上海等多地陆续……更加AKGGalaxyBuds真无线耳机林氏评测封面为啥是台iPhone?这不是说三星Buds的文章么?三星手机不都是安卓么?另外标题的更加AKG说的是调音还是Buds这条耳机的综合实力究竟如何?各位看官请……买车有10W预算,选择新车还是二手?对比后就懂了之前,笔者的一位伙计天天往二手车市场转悠,后来看到他开了一辆奔驰S回来,周围的同事朋友都非常羡慕。在与朋友的交谈中得知,这款S600才花了不到十万,前后的保养维修刚到十一……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网