Java字符串拼接常用方法总结

使用场景:用某个分隔符拼接字符串

  • 下边是我使用过的几种方式
    • 废话不多说,直接上代码
      • 初始数据
    • 1.使用流
    • 2.StringBuilder
    • 3.[StringJoiner](https://blog.csdn.net/qq_43417581/article/details/126076152?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170478446616800186556680%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170478446616800186556680&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-126076152-null-null.142^v99^pc_search_result_base6&utm_term=StringJoiner&spm=1018.2226.3001.4187) (详情请点击,看的大佬的)
    • 4. Guava
    • 做一个性能测试
      • 执行10w次用时比较如下:
      • 执行100w次用时比较如下:

下边是我使用过的几种方式

  1. 使用流
  2. StringBuilder
  3. StringJoiner
  4. Guava
    当然,肯定要看业务场景来选择适当的方法,这里小编为大家做过性能测试。

废话不多说,直接上代码

初始数据

List<String> list = Arrays.asList("Luffy", "Zoro", "Nami", 
                                  "Usopp", "Sanji", "Chopper", 
                                  "Robin", "FRANKY", "BROOK");

1.使用流

String result = list.stream().collect(Collectors.joining(","));

2.StringBuilder

StringBuilder strBur = new StringBuilder();
list.forEach(val -> {
    strBur.append(val).append(",");
});
strBur.toString();

3.StringJoiner (详情请点击,看的大佬的)

StringJoiner strJor = new StringJoiner(",");
for(String str : list) {
    strJor.add(str);
}
strJor.toString();

4. Guava

String result = Joiner.on(",").join(list);

做一个性能测试

package com.cck;                                                                                                                                                                                                                                                                                                      
import java.util.Arrays;                                                                                                                                
import java.util.List;                                                                                                                                  
import java.util.StringJoiner;                                                                                                                          
import java.util.function.Consumer;                                                                                                                     
import java.util.stream.Collectors;                                                                                                                     
                                                                                                                                                        
import com.google.common.base.Joiner;                                                                                                                   
                                                                                                                                                        
public class Test {                                                                                                                                     
                                                                                                                                                        
                                                                                                                                                        
    // 1.使用流                                                                                                                                            
    public static Consumer<List<String>> testStream() {                                                                                                 
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            String result = list.stream().collect(Collectors.joining(","));                                                                             
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    // 2.StringBuilder                                                                                                                                  
    public static Consumer<List<String>> testStringBuilder() {                                                                                          
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            StringBuilder strBur = new StringBuilder();                                                                                                 
            list.forEach(val -> {                                                                                                                       
                strBur.append(val).append(",");                                                                                                         
            });                                                                                                                                         
            strBur.toString();                                                                                                                          
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    // 3.StringJoiner                                                                                                                                   
    public static Consumer<List<String>> testStringJoiner() {                                                                                           
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            StringJoiner strjor = new StringJoiner(",");                                                                                                
            for(String str : list) {                                                                                                                    
                strjor.add(str);                                                                                                                        
            }                                                                                                                                           
            strjor.toString();                                                                                                                          
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    // 4.Guava                                                                                                                                          
    public static Consumer<List<String>> testGuava() {                                                                                                  
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            String result = Joiner.on(",").join(list);                                                                                                  
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    public static void test(Consumer<List<String>> consumer, 
                                List<String> list, String msg) {                                                           
                                                                                                                                                        
        long start = System.currentTimeMillis();                                                                                                        
        for (int i = 0; i < 1000000; i++) {                                                                                                             
            consumer.accept(list);                                                                                                                      
        }                                                                                                                                               
        long end = System.currentTimeMillis();                                                                                                          
                                                                                                                                                        
        System.out.println(msg + " need time : " + (end - start));                                                                                      
    }                                                                                                                                                   
                                                                                                                                                        
    public static void main(String[] args) {                                                                                                            
                                                                                                                                                        
        List<String> list = Arrays.asList("Luffy", "Zoro", "Nami", 
                                          "Usopp", "Sanji", "Chopper", 
                                          "Robin", "FRANKY", "BROOK");   
                                                                   
        test(testStream(),        list, "1.使用流");                                                                                                              
        test(testStringBuilder(), list, "2.StringBuilder");                                                                                             
        test(testStringJoiner(),  list, "3.StringJoiner");                                                                                               
        test(testGuava(),         list, "4.Guava");                                                                                                             
    }                                                                                                                                                   
                                                                                                                                                        
}                         

执行10w次用时比较如下:

在这里插入图片描述

执行100w次用时比较如下:

在这里插入图片描述
感觉需要根据运算量去决定用哪种方法。
在没特别要求的情况下,自己还是使用Guava的多一些,因为看起来好看些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304841.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外汇天眼:澳大利亚金融投诉管理局在2023年收到了102,790宗投诉

在2023年&#xff0c;澳大利亚金融投诉管理局收到了来自消费者和无法与其金融公司直接解决争端的小企业的102,790宗投诉。 根据初步的数据快照&#xff0c;这相比于2022年增加了23%。 澳大利亚的金融纠纷解决方案首次在一个日历年内录得了100,000宗投诉。 “投诉升级到AFCA的…

ssm基于Vue的戏剧推广网站论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统戏剧推广信息管理难度大&#xff0c;容错率低&#xff0c…

IT行业下一个就业风口,鸿蒙开发者有多抢手?

2023年年尾&#xff0c;华为与各大应用厂商密集签约&#xff0c;使得鸿蒙操作系统再次引发关注。 2019年8月9日&#xff0c;华为消费者业务CEO余承东在华为开发者大会上发布了鸿蒙操作系统HarmonyOS&#xff0c;成为当年科技圈的爆炸性新闻。此后&#xff0c;HarmonyOS从1.0迭…

vite 搭建vue3 TS项目初始框架

目录 仓库地址&#xff1a; 一.搭建项目 1.安装 Vite&#xff1a; 2.创建 Vue 3 项目&#xff1a; 3.进入项目目录&#xff1a; 4.安装依赖&#xff1a; 5.运行项目&#xff1a; 6.流程实操 二.修改项目结构&#xff0c;显示自定义的页面 1.整理静态样式文件 1.1.在 sr…

从大到小输出三个数

写代码将三个整数数按从大到小输出。 例如&#xff1a; 输入&#xff1a;2 3 1 输出&#xff1a;3 2 1 #include <stdio.h> int main() {int a 2;int b 3;int c 1;scanf("%d%d%d",&a, &b,&c);//我们设定a最大&#xff0c;c最小if(a<b){…

用google colab t4部署phi2(公网可访问)

目录 1.打开google colab&#xff0c;配置GPU 2.ngrok获取authtoken 3.安装所需的包​编辑 4.运行推理服务&#xff0c;生成公网地址 5.client.py访问上述推理服务 6.gradio界面版 1.打开google colab&#xff0c;配置GPU 2.ngrok获取authtoken https://dashboard.ngrok…

小程序环境搭建

文章目录 小程序介绍开发环境准备注册账号获取APPID开发⼯具 第⼀个微信⼩程序打开微信开发者⼯具新建⼩程序项⽬填写项⽬信息成功 微信开发者⼯具介绍⼩程序结构⽬录⼩程序⽂件结构和传统web对⽐ ⼩程序配置⽂件全局配置 app.json页面配置sitemap 配置-了解即可 小程序介绍 开…

Centos7下升级gcc/g++版本(简单 + 避坑)

在 Centos7 下&#xff0c;使用 yum 安装高版本的 gcc/g 最简单&#xff1a; yum -y install centos-release-scl yum -y install devtoolset-11-gcc devtoolset-11-gcc-c devtoolset-11-binutils需要安装哪个个版本的gcc/g&#xff0c;就把数字替换成对应的版本号。例如上面代…

A借助AI工具提升电子邮件营销内容效果

随着互联网的普及和电子邮件的广泛应用&#xff0c;邮件营销已成为企业推广产品和服务的重要手段之一。为了提高邮件营销的效果&#xff0c;我们需要关注邮件内容的质量和吸引力。而百度文言一心等AI工具作为一款强大的在线写作工具&#xff0c;可以帮助我们提升邮件营销内容的…

MySQL运维实战(3.2) 常见数据库连接失败问题排查

作者&#xff1a;俊达 我们经常会遇到一些数据库连接失败或访问报错的问题。收集并分析具体的报错信息&#xff0c;可以帮助我们迅速定位问题。 1、客户端到服务端的网络是否畅通&#xff0c;服务端端口是否能连通。 使用ping、telnet等工具探测服务端的端口是否能访问。 […

C语言分支和循环语句

分支和循环语句 学习内容 分支语句 if switch 循环语句 while for do while goto语句 1. 什么是语句&#xff1f; C语句可分为以下五类&#xff1a; 表达式语句 函数调用语句 控制语句 复合语句 空语句 本次介绍的是控制语句。 控制语句用于控制程序的执行流程&a…

Android14之刷机模式总结(一百七十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Spring之启动过程源码

文章目录 一. Spring初始化流程二. 源码分析1. 初步分析2. 核心方法refresh() 三. 事件发布机制1. 简介2. 源码分析 一. Spring初始化流程 前面的内容我们已经把Bean的生命周期的源码已经分析完了。现在我们从容器的角度去分析源码&#xff0c;这一部分首先着重分析一下Spring…

CVE-2023-51385 OpenSSH ProxyCommand命令注入漏洞

一、背景介绍 ProxyCommand 是 OpenSSH ssh_config 文件中的一个配置选项&#xff0c;它允许通过代理服务器建立 SSH 连接&#xff0c;从而在没有直接网络访问权限的情况下访问目标服务器。这对于需要经过跳板机、堡垒机或代理服务器才能访问的目标主机非常有用。 二、漏洞简…

2024第十六届数字图像处理国际会议(ICDIP 2024) 即将召开!

第十六届数字图像处理国际会议&#xff08;ICDIP 2024&#xff09;将于2024年5月24-26日在中国海口召开。本次会议由海南大学主办&#xff0c;海南大学计算机科学与技术学院承办。ICDIP自2009年开办以来&#xff0c;已先后在新加坡、日本、中国、马来西亚理科大学等国家成功举办…

【动态规划】C++算法:403.青蛙过河

作者推荐 【动态规划】C算法312 戳气球 LeetCode:403 青蛙过河 一只青蛙想要过河。 假定河流被等分为若干个单元格&#xff0c;并且在每一个单元格内都有可能放有一块石子&#xff08;也有可能没有&#xff09;。 青蛙可以跳上石子&#xff0c;但是不可以跳入水中。 给你石子…

C++ Web框架Drogon初体验笔记

这段时间研究了一下C的Web框架Drogon。从设计原理上面来说和Python的Web框架是大同小异的&#xff0c;但是难点在于编译项目上面&#xff0c;所以现在记录一下编译的过程。下面图是我项目的目录。其中include放的是头文件&#xff0c;src放的是视图文件&#xff0c;static放的是…

机器人技能学习-robosuite-0-入门介绍

文章目录 前言模块介绍实战案例1&#xff1a;从 demo 中创建自己的 env案例2&#xff1a;更换属于自己的物体 前言 资料太少、资料太少、资料太少&#xff0c;重要的事说三边&#xff0c;想根据自己实际场景自定义下机器人&#xff0c;结果发现无路可走&#xff0c;鉴于缺少参…

【unity小技巧】FPS游戏实现相机的偏移震动、武器射击后退和后坐力效果

最终效果 文章目录 最终效果前言相机偏移震动相机震动脚本换弹节点震动 武器射击后退效果武器后坐力效果完结 前言 关于后坐力之前其实已经分享了一个&#xff1a;FPS游戏后坐力制作思路 但是实现起来比较复杂&#xff0c;如果你只是想要简单的实现&#xff0c;可以看看这个&…

类与对象中篇

前言 在上篇我们讲解了类与对象的基础框架&#xff0c;中篇我们将讲解类与对象的基本内容&#xff0c;即类的六个默认成员函数。 一、类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 问题&#xff1a; 空类中真的什么都没有吗&#xff1f; 答案是&a…