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的使用和常见的坑以及平替方案性能比较相关推荐

  1. mysql left join 查询_MySQL联表查询基本操作之left-join常见的坑

    概述 对于中小体量的项目而言,联表查询是再常见不过的操作了,尤其是在做报表的时候.然而校对数据的时候,您发现坑了吗?本篇文章就 mysql 常用联表查询复现常见的坑. 基础环境 建表语句 DROP T ...

  2. 排序总结(排序算法稳定性、如何选择排序算法以及排序算法常见的坑)

    一.稳定性 处理相等数时的态度,可以决定算法的稳定性 时间复杂度为O(N^2) 空间复杂度O(1)的排序: 选择排序:无稳定性 冒泡排序:有稳定性 插入排序:有稳定性 时间复杂度为O(N*logN)的 ...

  3. 基于swiper使用vue-awesome-swiper 实现鼠标移入暂停自动播放、左右按钮控制前进后退、常见避坑、API中文文档地址

    vue 中使用swiper/vue-awesome-swiper 鼠标移入暂停自动播放,左右按钮控制前进后退,常见避坑 swiper对应vue-awesome-swiper版本会带来很多坑点,推荐下面 ...

  4. Windows API 函数SendMessage与PostMessage使用方法和常见的坑

    Windows API 函数中 SendMessage 与 PostMessage 用处很大,经常被程序员们使用.对老手们来说,了如知掌,但对新手来说,可能会遇到这样那样的问题.我作为一名老手中的新手 ...

  5. 程序员生存定律——成长路上常见的坑

    程序员生存定律--成长路上常见的坑 2014-7-8 10:09| 发布者: 小isabella| 查看: 2549| 评论: 6|原作者: leezy_2000|来自: CSDN 摘要: 1. &q ...

  6. 曲卉:培训完20家公司的增长团队,我总结了4个最常见的坑

    本文作者出自增长专家曲卉,著作有<硅谷增长黑客实战笔记>,相信做增长的你一定不会陌生.曲卉也为国内许多企业做过增长培训,包括大家熟知的腾讯.阿里.新浪.爱奇艺.陌陌等.对于企业如何做增长有 ...

  7. C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能...

    本文通过ANTS Memory Profiler工具探索c#中+.string.Concat.string.Format.StringBuilder.Append四种方式进行字符串拼接时的性能. 本文 ...

  8. 输电线路巡检机器人PPT_常见的电力行业智能巡检方案.ppt

    常见的电力行业智能巡检方案 金惠科技电力行业智能巡检方案 背景需求 解决方案 应用领域 汇报提纲 电力行业智能巡检背景 在智能电网和物联网高速发展的今天,电力设备巡检已不再满足于人工巡检的现状,它需要 ...

  9. 手机那点事!已有高人把常见的不常见的坑都给找出来了,我就随便转一下了

    http://www.bubuko.com/infodetail-800056.html mobileTech A useful tools or tips list for mobile web a ...

  10. mysql注解批量添加mybatis_Mybatis通过注解方式实现批量插入数据库 及 常见的坑

    MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcch/articles/2042298.html,但探讨如何通过注解配置实现同样效 ...

最新文章

  1. TQ2440的学习——UBOOT移植(串口控制台的支持)
  2. ios - 使用@try、catch捕获异常:
  3. R语言实战应用精讲50篇(五)-多重线性回归系列之模型拟合
  4. 表贴电阻尺寸与什么有关_为什么电阻的长度与电阻的大小有关系
  5. pg高性能服务器,如何充分利用单台服务器的性能将10亿级的json数据尽可能高效的插入postgresql?...
  6. linux 上传网页,Windows和Linux主机FTP上传网页注意事项
  7. 了解自定义De / Serializer:JSON绑定概述系列
  8. 网站大流量高并发访问的处理解决办法
  9. 学习过osgi 发布bundle
  10. 查询某表所有列名的SQL语句
  11. 关于键盘事件对象code值
  12. 迪杰斯特拉算法(求最短路径)
  13. 注射php,手工注射php学习
  14. 经典的大学学习生活心得
  15. 已解决:win11无法连接网络共享打印机的方法
  16. 香侬科技提出中文字型的深度学习模型Glyce,横扫13项中文NLP记录
  17. ubuntu内存不足1G解决办法
  18. java long型时间_long类型转换成日期
  19. itertools.groupby与pandas.groupby的异同
  20. java 视频截取图片 linux,在Windows和Linux下用JAVA调用FFMPEG 3.x进行视频截图的最新范例...

热门文章

  1. Android加载so库
  2. (十四)商品详情页实现
  3. HDU 1867(kmp应用)
  4. 提高数据存储效率的七个技巧
  5. python获取当前本机ip
  6. 华为p20nfc怎么复制门禁卡_新功能上线!你的手机NFC也可以当门禁卡使用
  7. python股票买卖问题_LeetCode-Python-714. 买卖股票的最佳时机含手续费
  8. AR技术应用 の 如何做一个Pokemon GO这只皮卡丘是你的吗?
  9. 计算机保研QA——by chx
  10. 计算机防火墙无法关闭,怎么关闭电脑防火墙(四种方法关闭Windows防火墙)