iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现字符串切割的方法详解
  • 913
分享到

Java实现字符串切割的方法详解

2024-04-02 19:04:59 913人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

今天给大家介绍一个小知识点,但是会非常的实用,就是平时我们写Java代码的时候,如果要对字符串进行切割,我们巧妙的运用一些技巧,可以把性能提升5~10倍。下面不说废话,直接来给大家上

今天给大家介绍一个小知识点,但是会非常的实用,就是平时我们写Java代码的时候,如果要对字符串进行切割,我们巧妙的运用一些技巧,可以把性能提升5~10倍。下面不说废话,直接来给大家上干货!

工作中常用的split()切割字符串效率高吗?

首先,我们用下面的一段代码,去拼接出来一个用逗号分隔的超长字符串,把从0开始一直到9999的每个数字都用逗号分隔,拼接成一个超长的字符串,以便于我们可以进行实验,代码如下所示:

public class StringSplitTest {
    public static void main(String[] args) {
        String string = null;
        StringBuffer stringBuffer = new StringBuffer();
        int max = 10000;
        for(int i = 0; i < max; i++) {
            stringBuffer.append(i);
            if(i < max - 1) {
                stringBuffer.append(",");
            }
        }
        string = stringBuffer.toString();
    }
}

接着我们可以用下面的代码来测试一下,如果用最基础的split方法来对超长字符串做切割,循环切割1w次,要耗费多长时间,看如下代码测试:

public class StringSplitTest {
    public static void main(String[] args) {
        String string = null;
        StringBuffer stringBuffer = new StringBuffer();

        int max = 10000;
        for(int i = 0; i < max; i++) {
            stringBuffer.append(i);
            if(i < max - 1) {
                stringBuffer.append(",");
            }
        }
        string = stringBuffer.toString();

        long start = System.currentTimeMillis();
        for(int i = 0; i < 10000; i++) {
            string.split(",");
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }

}

经过上面代码的测试,最终发现用split方法对字符串按照逗号进行切割,切割1w次是耗时2000多毫秒,这个不太固定,大概是2300毫秒左右。

JDK提供字符串切割工具类StringTokenizer

接着给大家介绍另外一个性能更加好的专门用于字符串切割的工具类,就是StringTokenizer,这个工具是jdk提供的,也是专门用来进行字符串切割的,他的性能会更好一些,我们可以看下面的代码,用他来进行1w次字符串切割,看看具体的性能测试结果如何:

import java.util.StringTokenizer;
public class StringSplitTest {
    public static void main(String[] args) {
        String string = null;
        StringBuffer stringBuffer = new StringBuffer();
        int max = 10000;
        for(int i = 0; i < max; i++) {
            stringBuffer.append(i);
            if(i < max - 1) {
                stringBuffer.append(",");
            }
        }
        string = stringBuffer.toString();

        long start = System.currentTimeMillis();
        for(int i = 0; i < 10000; i++) {
            string.split(",");
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);

        start = System.currentTimeMillis();
        StringTokenizer stringTokenizer =
                new StringTokenizer(string, ",");
        for(int i = 0; i < 10000; i++) {
            while(stringTokenizer.hasMoreTokens()) {
                stringTokenizer.nextToken();
            }
            stringTokenizer = new StringTokenizer(string, ",");
        }
        end = System.currentTimeMillis();
        System.out.println(end - start);
    }

}

大家看上面的代码,用StringTokenizer可以通过hasMoreTokens()方法判断是否有切割出的下一个元素,如果有就用nextToken()拿到这个切割出来的元素,一次全部切割完毕后,就重新创建一个新的StringTokenizer对象。

这样连续切割1w次,经过测试之后,会发现用StringTokenizer切割字符串1w次的耗时大概是1900毫秒左右。

大家感觉如何?是不是看到差距了?换一下切割字符串的方式,就可以让耗时减少400~500ms,性能目前已经可以提升20%了。

手把手带你实现一个更高效的字符串切割工具类

接着我们来自己封装一个切割字符串的函数,用这个函数再来做一次字符串切割看看,大家先看字符串切割函数的代码:

private static void split(String string) {
  String remainString = string;
  int startIndex = 0;
  int endIndex = 0;
  while(true) {
    endIndex = remainString.indexOf(",", startIndex);
    if(endIndex <= 0) {
      break;
    }
    remainString.substring(startIndex, endIndex);
    startIndex = endIndex + 1;
  }
}

上面那段代码是我们自定义的字符串切割函数,大概意思是说,每一次切割都走一个while循环,startIndex初始值是0,然后每一次循环都找到从startIndex开始的下一个逗号的index,就是endIndex,基于startIndex和endIndex截取一个字符串出来,然后startIndex可以推进到本次endIndex + 1即可,下一次循环就会截取下一个逗号之前的子字符串了。

下面我们用用上述自定义的切割函数再次测试一下,如下代码:

import java.util.StringTokenizer;
public class StringSplitTest {
    public static void main(String[] args) {
        String string = null;
        StringBuffer stringBuffer = new StringBuffer();
        int max = 10000;
        for(int i = 0; i < max; i++) {
            stringBuffer.append(i);
            if(i < max - 1) {
                stringBuffer.append(",");
            }
        }
        string = stringBuffer.toString();
        long start = System.currentTimeMillis();
        for(int i = 0; i < 10000; i++) {
            string.split(",");
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);

        start = System.currentTimeMillis();
        StringTokenizer stringTokenizer =
                new StringTokenizer(string, ",");
        for(int i = 0; i < 10000; i++) {
            while(stringTokenizer.hasMoreTokens()) {
                stringTokenizer.nextToken();
            }
            stringTokenizer = new StringTokenizer(string, ",");
        }
        end = System.currentTimeMillis();
        System.out.println(end - start);
        start = System.currentTimeMillis();
        for(int i = 0; i < 10000; i++) {
            split(string);
        }
        end = System.currentTimeMillis();
        System.out.println(end - start);
    }
    private static void split(String string) {
        String remainString = string;
        int startIndex = 0;
        int endIndex = 0;
        while(true) {
            endIndex = remainString.indexOf(",", startIndex);
            if(endIndex <= 0) {
                break;
            }
            remainString.substring(startIndex, endIndex);
            startIndex = endIndex + 1;
        }
    }
}

总结

经过上述代码测试之后,我们自己写的字符串切割函数的耗时大概是在1000ms左右,相比较之下,比String.split方法的性能提升了2倍多,比StringTokenizer的性能也提升了2倍,如果要是字符串更大呢?其实字符串越大,性能差距就会越多,可能会呈更大的倍数提升我们的性能!

以上就是Java实现字符串切割的方法详解的详细内容,更多关于Java字符串切割的资料请关注编程网其它相关文章!

--结束END--

本文标题: Java实现字符串切割的方法详解

本文链接: https://www.lsjlt.com/news/144551.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现字符串切割的方法详解
    今天给大家介绍一个小知识点,但是会非常的实用,就是平时我们写Java代码的时候,如果要对字符串进行切割,我们巧妙的运用一些技巧,可以把性能提升5~10倍。下面不说废话,直接来给大家上...
    99+
    2024-04-02
  • C++实现字符串切割的两种方法
    目录字符串切割的两种方法1、通过stl实现2、通过使用strtok()函数实现字符串分割&类型转换(string->double)字符串切割的两种方法 字符串切割的使用...
    99+
    2024-04-02
  • C++怎么实现字符串切割
    本篇内容介绍了“C++怎么实现字符串切割”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字符串切割的两种方法字符串切割的使用频率还是挺高的,s...
    99+
    2023-07-02
  • Java中String的split切割字符串方法实例及扩展
    目录一、public String[] split(String regex)二、public String[] split(String regex, int limit)三、扩展...
    99+
    2024-04-02
  • java切割字符串,转成list
    因项目需求,需要对前端传过来的字符串进行切割操作,记录下来,以便后续查看。 1、逗号分割字符串转为List public static List idsStrToList(String ids...
    99+
    2023-09-13
    java
  • mysql切割字符串的方法是什么
    在MySQL中,可以使用SUBSTRING_INDEX函数来切割字符串。该函数接受三个参数,即要切割的字符串,分隔符以及要返回的子字...
    99+
    2024-05-10
    mysql
  • Java实现字符串的分割(基于String.split()方法)
    目录前言一、JDK-1.8-API文档说明(推荐阅读)二、简单的使用1、单个字符分隔2、正则表达式三、Java源码分析1、源代码的测试代码2、源代码运行原理图示3、解读完代码后的总结...
    99+
    2024-04-02
  • Java 切割字符串的几种方式集合
    目录Java 切割字符串的几种方式1、StringTokenizer切割2、..split("*")分割3、调用String自己的api subString()java优雅...
    99+
    2024-04-02
  • Java切割字符串的踩坑实战记录
    目录坑出现的环境问题的解决补充:java分割字符串常见语法一.java.lang.String.split()二.java.util.StringTokenizer()总结坑出现的环...
    99+
    2022-11-13
    java切割字符串的坑有哪些 java 切割字符串 java切割字符串的方法
  • Java中实现String字符串分割的3种方法
    目录Java中实现String字符串分割的3种方法方法1:split(string) 方法方法2:substring方法方法3:StringTokenizer方法扩展:JAVA 截取...
    99+
    2023-05-20
    java string字符串分割 java 字符串分割
  • java分割文本字符串的方法
    问题:在项目中,当保存数据超过数据库字段列长度限制时,如何解决?一种常见的解决办法是:截串存取。顾名思义,就是对大文本数据按指定长度进行截取,返回结果集依截取顺序存储在新表中。并通过在新表中创建一个type字段来标识新表中截取的内容对应旧表...
    99+
    2023-05-31
    java 分割 字符串
  • java 分割字符串(多种方法)
    [toc] 1、String#split 可以根据给定的分隔符或正则表达式将一个字符串分割成多个部分 // 使用正则表达式 "(...
    99+
    2023-08-31
    java Powered by 金山文档
  • python中的字符串切割maxsplit
    目录python 字符串切割 maxsplitpython字符串切割split和rsplit函数1. split(sep, maxsplit)2. rsplit(sep, maxsp...
    99+
    2022-12-20
    python字符串切割 python maxsplit python切割字符串
  • Pythonre.split方法分割字符串的实现示例
    目录re.split方法问题解决方案讨论re.split方法 注:使用前需要引入包(import re) 功能:split能够按照所能匹配的字串将字符串进行切分,返回切分后的字符串列...
    99+
    2024-04-02
  • Java字符串的截取和分割方法
    这篇文章主要讲解了“Java字符串的截取和分割方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java字符串的截取和分割方法”吧!一、字符串的截取和分割在程序开发中,有些时候我们需要对字符...
    99+
    2023-06-15
  • String字符串分割的3种方法 Java
    方法1:split(string) 方法 使用了 split(string) 方法通过指定分隔符将字符串分割为数组 public class Test { public static void ...
    99+
    2023-09-08
    java jvm 开发语言
  • java切分字符串的2种方法实例
    目录方法一:通过substring()截取字符串方法二: 通过split()切割字符串,返回结果为字符串数组补充:根据某个字符截取字符串总结java中包含两种切分字符串方式...
    99+
    2024-04-02
  • javascript分割字符串的方法
    这篇文章给大家分享的是有关javascript分割字符串的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。分割方法:1、用“string.split(分割符)”;2、用“String.substring...
    99+
    2023-06-14
  • Python中的字符串切割和拼接方法有哪些?
    Python中的字符串切割和拼接方法有很多种,下面将介绍其中常用的方法,并附上代码示例。使用split()方法进行字符串切割split()方法可以根据指定的分隔符将字符串切割成多个部分,返回一个包含切割后部分的列表。str1 = "...
    99+
    2023-10-25
    字符串 拼接 切割
  • Java中如何实现String字符串分割
    今天小编给大家分享的是Java中如何实现String字符串分割,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。Java中实现String字符串分割的3种方法方法1:split(stri...
    99+
    2023-08-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作