摘要:用某個分隔符拼接字符串寫程序時經常遇到需要將集合的元素拼接成字符串,然后存入數據庫的情況。下邊是我使用過的幾種方式使用流代碼初始數據使用流性能測試使用流使用流執行次用時如下執行次用時如下感覺需要根據運算量去決定用哪種方法。
用某個分隔符拼接字符串
寫程序時經常遇到需要將集合的元素拼接成字符串,然后存入數據庫的情況。
下邊是我使用過的幾種方式
使用流
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的多一些,因為看起來好看些。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69072.html
摘要:布爾值布爾值主要用于的分支結構中判斷使用,布爾值的操作符有和,就是與或非。此外比較操作符只能作用于數字,但是可作用于所有類型,這些操作符返回布爾值。 Sass筆記關于sass的基礎部分已經寫完,這一篇介紹Sass的高級特性——腳本特性。Sass能做很多事讓樣式表更智能,我們先會看到Sass眼中的數據類型,在這些數據類型上會有可進行的操作,此外,Sass中的內置函數(尤其是顏色函數)能幫...
摘要:記錄總結一下的中引入圖片路徑的幾種書寫方式中靜態資源的引入機制關于靜態資源的官方文檔靜態資源可以通過兩種方式進行處理在被導入或在中通過相對路徑以開頭被引用。如果是一個絕對路徑,例如,它將會被保留不變。 vue --version 3.6.3記錄總結一下的Vue中引入圖片路徑的幾種書寫方式 vue中靜態資源的引入機制 Vue.js關于靜態資源的官方文檔 靜態資源可以通過兩種方式進行處理...
摘要:字符串常用的幾種方法,拼接檢測字符串內容是否相等引用是否相等字符串長度變量名,,區別字符串常量字符串變量線程安全字符串變量非線程安全具體區別自行百度,不做詳解八。 重新復習下java哦,當然一些環境變量配置之類的就忽略不計了啊。百度一坨,都是些常規的東西一:java語句的一些規則 習慣很重要 雖然很想跳過,但想想還是稍微記錄一些 1,結尾要有分號 ...
閱讀 2893·2021-11-23 09:51
閱讀 3404·2021-11-22 09:34
閱讀 3305·2021-10-27 14:14
閱讀 1504·2019-08-30 15:55
閱讀 3345·2019-08-30 15:54
閱讀 1066·2019-08-30 15:52
閱讀 1888·2019-08-30 12:46
閱讀 2845·2019-08-29 16:11