String spilt的使用和常见的坑以及平替方案性能比较
String spilt用法
入参:
regex或regex,limit
将字符串根据某个符号(正则)进行分割成char数组。limit用于确定 分割后的字符串数组的长度。
返回值String []
方法一、入参仅正则regex
String b = "This is the code, test 1 ,test 2";String b0 = b.split(",")[0];String b1 = b.split(",")[1];String b2 = b.split(",")[2];System.out.println(b0);System.out.println(b1);System.out.println(b2);//outPut:This is the codetest 1 test 2
方法二、入参regex,limit
String a = "always This is the code, test 1 ,test 2";String s0 = a.split(",",2)[0];String s1 = a.split(",",2)[1];System.out.println(s0);System.out.println(s1);//outPut:always This is the codetest 1 ,test 2//此时如果输出a.split(",",2)[2],也就是数组的第三个元素会报异常ArrayIndexOutOfBoundsException(数组越界)
谨慎使用:
在多线程或者请求量比较大的情况下慎用spilt方法,因为可能会导致OOM,spilt方法中使用了subString方法,导致最初的字符串引用无法被回收,过期引用永远无法被消除。
spilt虽好,可不要贪杯哦。
个人拙见
由于编译正则是大量消耗资源的操作,当大量使用spilt时,可以将正则规则设置为常量。
Demo:
private static final Pattern ROMAN = Pattern.compile("^(?=.)M*(C[MD]|D?C{0,3})" + "(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");static boolean isRomanNumber(String s) {return ROMAN.matcher(s).matches();}
spilt的平替方案
可按需选择:
StringTokenizer:
StringTokenizer stringTokenizer = new StringTokenizer("also This is the code, test 1 ,test 2", ",");while (stringTokenizer.hasMoreTokens()){String s = stringTokenizer.nextToken();System.out.println(s);}
Hutool:
List<String> split = StrSpliter.split(a, ',');
性能比较
spilt性能中规中矩,可能出现OOM的问题,hutool不会出现过期引用导致OOM的问题,但是性能最慢,StringTokenizer性能最好,但可能不如前两者灵活,可按需使用。
String spilt的使用和常见的坑以及平替方案性能比较相关推荐
- mysql left join 查询_MySQL联表查询基本操作之left-join常见的坑
概述 对于中小体量的项目而言,联表查询是再常见不过的操作了,尤其是在做报表的时候.然而校对数据的时候,您发现坑了吗?本篇文章就 mysql 常用联表查询复现常见的坑. 基础环境 建表语句 DROP T ...
- 排序总结(排序算法稳定性、如何选择排序算法以及排序算法常见的坑)
一.稳定性 处理相等数时的态度,可以决定算法的稳定性 时间复杂度为O(N^2) 空间复杂度O(1)的排序: 选择排序:无稳定性 冒泡排序:有稳定性 插入排序:有稳定性 时间复杂度为O(N*logN)的 ...
- 基于swiper使用vue-awesome-swiper 实现鼠标移入暂停自动播放、左右按钮控制前进后退、常见避坑、API中文文档地址
vue 中使用swiper/vue-awesome-swiper 鼠标移入暂停自动播放,左右按钮控制前进后退,常见避坑 swiper对应vue-awesome-swiper版本会带来很多坑点,推荐下面 ...
- Windows API 函数SendMessage与PostMessage使用方法和常见的坑
Windows API 函数中 SendMessage 与 PostMessage 用处很大,经常被程序员们使用.对老手们来说,了如知掌,但对新手来说,可能会遇到这样那样的问题.我作为一名老手中的新手 ...
- 程序员生存定律——成长路上常见的坑
程序员生存定律--成长路上常见的坑 2014-7-8 10:09| 发布者: 小isabella| 查看: 2549| 评论: 6|原作者: leezy_2000|来自: CSDN 摘要: 1. &q ...
- 曲卉:培训完20家公司的增长团队,我总结了4个最常见的坑
本文作者出自增长专家曲卉,著作有<硅谷增长黑客实战笔记>,相信做增长的你一定不会陌生.曲卉也为国内许多企业做过增长培训,包括大家熟知的腾讯.阿里.新浪.爱奇艺.陌陌等.对于企业如何做增长有 ...
- C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能...
本文通过ANTS Memory Profiler工具探索c#中+.string.Concat.string.Format.StringBuilder.Append四种方式进行字符串拼接时的性能. 本文 ...
- 输电线路巡检机器人PPT_常见的电力行业智能巡检方案.ppt
常见的电力行业智能巡检方案 金惠科技电力行业智能巡检方案 背景需求 解决方案 应用领域 汇报提纲 电力行业智能巡检背景 在智能电网和物联网高速发展的今天,电力设备巡检已不再满足于人工巡检的现状,它需要 ...
- 手机那点事!已有高人把常见的不常见的坑都给找出来了,我就随便转一下了
http://www.bubuko.com/infodetail-800056.html mobileTech A useful tools or tips list for mobile web a ...
- mysql注解批量添加mybatis_Mybatis通过注解方式实现批量插入数据库 及 常见的坑
MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcch/articles/2042298.html,但探讨如何通过注解配置实现同样效 ...
最新文章
- Extjs PROXY查询params无法传参,改用extraParams
- 使用Python和OpenCV对轮廓进行排序(从左到右,自上而下)
- mysql 多个unique key_[MySQL]MySQL 中通过使用UNIQUE KEY 来控制字段值不重复的问题.
- 计算机视觉面试常见问题(含解答)
- 利用python创建一个新本地文件
- CF758 D. Ability To Convert 细节处理字符串
- 信息——人类现代文明的奇迹
- 第十四章_超参数调整
- LeetCode10 Regular Expression Matching
- 金橙子打标卡二次开发应用
- 3ds max制作马克杯
- 要马儿跑,又要马儿不吃草?聊聊联邦学习与分布式机器学习
- python垃圾邮件过滤_手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤
- 误差条图各部分的代表意思_【小强视界】混凝土搅拌站计量误差原因分析及控制措施...
- 淘宝/天猫API接口,item_sku - 淘宝商品SKU详细信息查询,淘宝/天猫获取sku详细信息 API 返回值说明
- 什么是虚拟机,有什么用?
- linux cp改文件名,更改Linux `cp`命令以复制文件组
- 从今天起我想要热爱生活
- 《编程之美》一书八位作者,讲述自己的编程之路
- CorelDRAW钢笔工具抠图教程
热门文章
- 字节跳动后端开发实习生面试经验
- Error: Cannot find module 'util-deprecate'
- Warning from https://repo.packagist.org: Support for Composer 1 is deprecate
- 自制一个SD/TF的读卡器
- Odoo owl 学习笔记之14—错误处理erro_handing
- php apply filters,apply_filters()应用过滤器
- Android JNI开发三: SO库的使用
- SpringBoot整合Dubbo
- 〇、什么是全栈工程师
- RabbitMQ的学习笔记