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. Extjs PROXY查询params无法传参,改用extraParams
  2. 使用Python和OpenCV对轮廓进行排序(从左到右,自上而下)
  3. mysql 多个unique key_[MySQL]MySQL 中通过使用UNIQUE KEY 来控制字段值不重复的问题.
  4. 计算机视觉面试常见问题(含解答)
  5. 利用python创建一个新本地文件
  6. CF758 D. Ability To Convert 细节处理字符串
  7. 信息——人类现代文明的奇迹
  8. 第十四章_超参数调整
  9. LeetCode10 Regular Expression Matching
  10. 金橙子打标卡二次开发应用
  11. 3ds max制作马克杯
  12. 要马儿跑,又要马儿不吃草?聊聊联邦学习与分布式机器学习
  13. python垃圾邮件过滤_手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤
  14. 误差条图各部分的代表意思_【小强视界】混凝土搅拌站计量误差原因分析及控制措施...
  15. 淘宝/天猫API接口,item_sku - 淘宝商品SKU详细信息查询,淘宝/天猫获取sku详细信息 API 返回值说明
  16. 什么是虚拟机,有什么用?
  17. linux cp改文件名,更改Linux `cp`命令以复制文件组
  18. 从今天起我想要热爱生活
  19. 《编程之美》一书八位作者,讲述自己的编程之路
  20. CorelDRAW钢笔工具抠图教程

热门文章

  1. 字节跳动后端开发实习生面试经验
  2. Error: Cannot find module 'util-deprecate'
  3. Warning from https://repo.packagist.org: Support for Composer 1 is deprecate
  4. 自制一个SD/TF的读卡器
  5. Odoo owl 学习笔记之14—错误处理erro_handing
  6. php apply filters,apply_filters()应用过滤器
  7. Android JNI开发三: SO库的使用
  8. SpringBoot整合Dubbo
  9. 〇、什么是全栈工程师
  10. RabbitMQ的学习笔记