摘要:用某个分隔符拼接字符串写程序时经常遇到需要将集合的元素拼接成字符串,然后存入数据库的情况。下边是我使用过的几种方式使用流代码初始数据使用流性能测试使用流使用流执行次用时如下执行次用时如下感觉需要根据运算量去决定用哪种方法。
用某个分隔符拼接字符串
写程序时经常遇到需要将集合的元素拼接成字符串,然后存入数据库的情况。
下边是我使用过的几种方式
使用流
StringBuilder
StringJoiner
Guava
代码 初始数据List1. 使用流list = Arrays.asList("Luffy", "Zoro", "Nami", "Usopp", "Sanji", "Chopper", "Robin", "FRANKY", "BROOK");
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笔记关于sass的基础部分已经写完,这一篇介绍Sass的高级特性——脚本特性。Sass能做很多事让样式表更智能,我们先会看到Sass眼中的数据类型,在这些数据类型上会有可进行的操作,此外,Sass中的内置函数(尤其是颜色函数)能帮...
摘要:记录总结一下的中引入图片路径的几种书写方式中静态资源的引入机制关于静态资源的官方文档静态资源可以通过两种方式进行处理在被导入或在中通过相对路径以开头被引用。如果是一个绝对路径,例如,它将会被保留不变。 vue --version 3.6.3记录总结一下的Vue中引入图片路径的几种书写方式 vue中静态资源的引入机制 Vue.js关于静态资源的官方文档 静态资源可以通过两种方式进行处理...
摘要:字符串常用的几种方法,拼接检测字符串内容是否相等引用是否相等字符串长度变量名,,区别字符串常量字符串变量线程安全字符串变量非线程安全具体区别自行百度,不做详解八。 重新复习下java哦,当然一些环境变量配置之类的就忽略不计了啊。百度一坨,都是些常规的东西一:java语句的一些规则 习惯很重要 虽然很想跳过,但想想还是稍微记录一些 1,结尾要有分号 ...
阅读 2862·2021-11-23 09:51
阅读 3379·2021-11-22 09:34
阅读 3257·2021-10-27 14:14
阅读 1439·2019-08-30 15:55
阅读 3306·2019-08-30 15:54
阅读 1035·2019-08-30 15:52
阅读 1844·2019-08-30 12:46
阅读 2813·2019-08-29 16:11