资讯专栏INFORMATION COLUMN

Java 拼接字符串的几种写法

姘搁『 / 546人阅读

摘要:用某个分隔符拼接字符串写程序时经常遇到需要将集合的元素拼接成字符串,然后存入数据库的情况。下边是我使用过的几种方式使用流代码初始数据使用流性能测试使用流使用流执行次用时如下执行次用时如下感觉需要根据运算量去决定用哪种方法。

用某个分隔符拼接字符串

写程序时经常遇到需要将集合的元素拼接成字符串,然后存入数据库的情况。
下边是我使用过的几种方式

使用流

StringBuilder

StringJoiner

Guava

代码 初始数据
List 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> testStream() {                                                                                                 
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            String result = list.stream().collect(Collectors.joining(","));                                                                             
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    // 2.StringBuilder                                                                                                                                  
    public static Consumer> testStringBuilder() {                                                                                          
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            StringBuilder strBur = new StringBuilder();                                                                                                 
            list.forEach(val -> {                                                                                                                       
                strBur.append(val).append(",");                                                                                                         
            });                                                                                                                                         
            strBur.toString();                                                                                                                          
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    // 3.StringJoiner                                                                                                                                   
    public static Consumer> testStringJoiner() {                                                                                           
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            StringJoiner strjor = new StringJoiner(",");                                                                                                
            for(String str : list) {                                                                                                                    
                strjor.add(str);                                                                                                                        
            }                                                                                                                                           
            strjor.toString();                                                                                                                          
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    // 4.Guava                                                                                                                                          
    public static Consumer> testGuava() {                                                                                                  
                                                                                                                                                        
        return (list) -> {                                                                                                                              
                                                                                                                                                        
            String result = Joiner.on(",").join(list);                                                                                                  
        };                                                                                                                                              
    }                                                                                                                                                   
                                                                                                                                                        
    public static void test(Consumer> consumer, 
                                List 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 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");                                                                                                             
    }                                                                                                                                                   
                                                                                                                                                        
}                                                                                                                                                       
执行100w次用时如下:

执行10w次用时如下:

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69072.html

相关文章

  • sass笔记-4|像写脚本一样写Sass,把能交给Sass办的都交给它

    摘要:布尔值布尔值主要用于的分支结构中判断使用,布尔值的操作符有和,就是与或非。此外比较操作符只能作用于数字,但是可作用于所有类型,这些操作符返回布尔值。 Sass笔记关于sass的基础部分已经写完,这一篇介绍Sass的高级特性——脚本特性。Sass能做很多事让样式表更智能,我们先会看到Sass眼中的数据类型,在这些数据类型上会有可进行的操作,此外,Sass中的内置函数(尤其是颜色函数)能帮...

    AnthonyHan 评论0 收藏0
  • Vue.js中引入图片路径几种方式

    摘要:记录总结一下的中引入图片路径的几种书写方式中静态资源的引入机制关于静态资源的官方文档静态资源可以通过两种方式进行处理在被导入或在中通过相对路径以开头被引用。如果是一个绝对路径,例如,它将会被保留不变。 vue --version 3.6.3记录总结一下的Vue中引入图片路径的几种书写方式 vue中静态资源的引入机制 Vue.js关于静态资源的官方文档 静态资源可以通过两种方式进行处理...

    adam1q84 评论0 收藏0
  • 单例模式几种写法

    摘要:单例模式要点私有的构造方法指向实例的私有静态引用获取实例对象的公有静态方法饿汉模式非线程安全私有化构造函数懒汉模式非线程安全私有化构造函数双重线程锁检查单例线程安全私有化构造函数枚举单例更多关于的文章请戳这里您的留言意见是对我最大的支持我的 单例模式要点 私有的构造方法 指向实例的私有静态引用 获取实例对象的公有静态方法 饿汉模式(非线程安全) public class Singl...

    Youngs 评论0 收藏0
  • overview_java(一)

    摘要:字符串常用的几种方法,拼接检测字符串内容是否相等引用是否相等字符串长度变量名,,区别字符串常量字符串变量线程安全字符串变量非线程安全具体区别自行百度,不做详解八。 重新复习下java哦,当然一些环境变量配置之类的就忽略不计了啊。百度一坨,都是些常规的东西一:java语句的一些规则 习惯很重要 虽然很想跳过,但想想还是稍微记录一些 1,结尾要有分号 ...

    liukai90 评论0 收藏0

发表评论

0条评论

姘搁『

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<