当前位置: 首页 > news >正文

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的多一些,因为看起来好看些。

http://www.lryc.cn/news/277092.html

相关文章:

  • 【2023 CSIG垂直领域大模型】大模型时代,如何完成IDP智能文档处理领域的OCR大一统?
  • Phi-2小语言模型QLoRA微调教程
  • hadoop自动获取时间
  • 【面试高频算法解析】算法练习8 单调队列
  • ATTCK视角下的信息收集:Sysmon检测
  • 02、Kafka ------ 配置 Kafka 集群
  • 2024年全球网络安全预测报告
  • Qt - QML与C++数据交互详解
  • Kettle Local引擎使用记录(一)(基于Kettle web版数据集成开源工具data-integration源码)
  • Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中(补充)
  • WPF 基础入门(资源字典)
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑电氢耦合和碳交易的电氢能源系统置信间隙鲁棒规划》
  • ubuntu设定时间与外部ntp同步
  • DataFrame详解
  • 控制障碍函数(Control Barrier Function,CBF) 三、代码
  • 哈希表-散列表数据结构
  • C# 强制类型转换和as区别和不同使用场景
  • 什么是 DDoS 攻击
  • c++隐式类型转换与explicit
  • BERT Intro
  • “To-Do Master“ GPTs:重塑任务管理的趣味与效率
  • npm安装vue,添加淘宝镜像
  • LeetCode 2707. 字符串中的额外字符
  • Js进阶31-DOM 操作专题
  • Hive之set参数大全-4
  • 竞赛保研 基于深度学习的人脸识别系统
  • 9.建造者模式
  • 简单的MOV转MP4方法
  • YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)
  • 基于模块自定义扩展字段的后端逻辑实现(一)