jdk8环境下,java字符串使用replace()和replaceAll()方法性能对比

简介: jdk8环境下,java字符串使用replace()和replaceAll()方法性能对比

一、背景

最近工作中碰到了将数据库表中数据导出csv文件时,对字段数据含有特殊字符导出时清洗点,使得导出的csv文件所有字段都更加干净,比如在数据库中存的一个字段为下面这样的。

[\"2018-08-15VKCz\", \"2018-08-15VKCz\",\"2018-08-15VKCz\"]

导出时就需要转换为下面这样的,显得数据干净整洁,可以看出只需要将【】“等特殊字符替换成空就可以了,这就需要用到replace方法或者replaceAll方法,对于从数据库导出数据,会有巨量数据导出,性能会比较重要,假如会有50万个需要转换,现在就来看看性能如何。

2018-08-15VKCz, 2018-08-15VKCz,2018-08-15VKCz

二、性能比较

1、使用replace方法进行转换,代码如下:

        String a = "[\"2018-08-15VKCz\", \"2018-08-15VKCz\",\"2018-08-15VKCz\"]";
        final long start1 = System.currentTimeMillis();
        for (int i = 0; i < 5000000; i++) {
            String replace = a.replace("\"", "")
                    .replace("[", "")
                    .replace("]", "");
            if (i == 20000) {
                System.out.println("使用replace()结果: " + replace);
            }
        }
        long end1 = System.currentTimeMillis();
        long result1 = end1 - start1;
        System.out.println("使用replace()耗时 :" + result1);

结果如下:

使用replace()结果: 2018-08-15VKCz, 2018-08-15VKCz,2018-08-15VKCz
使用replace()耗时 :3688

2、使用replaceAll方法进行转换,代码如下:

 long start = System.currentTimeMillis();
        for (int i = 0; i < 500000; i++) {
            String replace = a.replaceAll("[(\")|(\\[)|(\\])]", "");
            if (i == 20000) {
                System.out.println("使用replaceAll()结果:" + replace);
            }
        }
        long end = System.currentTimeMillis();
        long result = end - start;
        System.out.println("使用replaceAll()耗时 :" + result);

结果如下:

使用replaceAll()结果:2018-08-15VKCz, 2018-08-15VKCz,2018-08-15VKCz
使用replaceAll()耗时 :1718

三、总结

      从上面测试例子对比可知,在jdk8环境下,使用replaceAll方法要比replace方法性能高,所以优先选择replace方法来满足需求比较好,不行复制下来试一试,欢迎关注java基础笔记。

目录
打赏
0
0
0
0
31
分享
相关文章
Java 字符串详解
本文介绍了 Java 中的三种字符串类型:String、StringBuffer 和 StringBuilder,详细讲解了它们的区别与使用场景。String 是不可变的字符串常量,线程安全但操作效率较低;StringBuffer 是可变的字符串缓冲区,线程安全但性能稍逊;StringBuilder 同样是可变的字符串缓冲区,但非线程安全,性能更高。文章还列举了三者的常用方法,并总结了它们在不同环境下的适用情况及执行速度对比。
58 17
Java字符串缓冲区
字符串缓冲区是用于处理可变字符串的容器,Java中提供了`StringBuffer`和`StringBuilder`两种实现。由于`String`类不可变,当需要频繁修改字符串时,使用缓冲区更高效。`StringBuffer`是一个线程安全的容器,支持动态扩展、任意类型数据转为字符串存储,并提供多种操作方法(如`append`、`insert`、`delete`等)。通过这些方法,可以方便地对字符串进行添加、插入、删除等操作,最终将结果转换为字符串。示例代码展示了如何创建缓冲区对象并调用相关方法完成字符串操作。
47 13
|
5月前
|
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
186 83
探索Java动态代理的奥秘:JDK vs CGLIB
动态代理是一种在 运行时动态生成代理类的技术,无需手动编写代理类代码。它通过拦截目标方法的调用,实现对核心逻辑的 无侵入式增强(如日志、事务、权限控制等)。
62 0
探索Java动态代理的奥秘:JDK vs CGLIB
深入理解 Java JDK —— 让我们从基础到进阶
JDK(Java Development Kit)是 Java 开发的核心工具包,包含编译、运行和调试 Java 程序所需的所有工具和库。它主要由 JVM(Java 虚拟机)、JRE(Java 运行时环境)和 Java 核心类库组成。JVM 是跨平台运行的基础,负责字节码的加载、执行和内存管理;JRE 提供运行 Java 应用的环境;核心类库则提供了丰富的 API 支持。通过编写、编译和运行一个简单的 Java 程序,可以深入理解 JDK 的工作原理。此外,JDK 还提供了 JIT 编译、垃圾回收优化和并发工具包等高级功能,帮助开发者提高程序性能和稳定性。
192 10
|
5月前
|
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
94 26
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
150 8
|
5月前
|
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
230 1
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
211 2
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
98 6
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等