亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java將List轉(zhuǎn)換為String的幾種常見(jiàn)方式

 更新時(shí)間:2024年03月21日 10:38:10   作者:zuihongyan518  
在實(shí)際開(kāi)發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,下面這篇文章主要給大家介紹了關(guān)于Java將List轉(zhuǎn)換為String的幾種常見(jiàn)方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

將 List 轉(zhuǎn)換為 String的幾種方式

  • 使用 List的toString()方法將 List 轉(zhuǎn)換為 String;結(jié)果前后會(huì)帶有英文的中括號(hào)[],如:[1, 2, 3, 4, 5]
  • 使用Java8 stream流中的Collections.joining()方法,帶有逗號(hào)分隔符或自定義分隔符將集合轉(zhuǎn)成String字符串
  • 使用String.join()方法將帶有逗號(hào)分隔符或自定義分隔符的集合轉(zhuǎn)換為字符串
  • 使用Apache commons包下的StringUtils.join()方法;轉(zhuǎn)成的String結(jié)尾帶有分隔符小尾巴,如:"張三,李四,"
  • 使用 StringBuilder、StringBuffer的append方法自定義join()方法

第一種:List.toString方法

List.toString()產(chǎn)生的結(jié)果會(huì)在開(kāi)頭和結(jié)尾添加英文中括號(hào),每個(gè)字符串用逗號(hào)分隔符分隔(分隔符不可更變)。如果我們想去掉方括號(hào)的話(huà),需要借助String.replaceAll方法。

/**
  * List的toString方法,結(jié)果前后會(huì)帶有英文的中括號(hào)[],如:[1, 2, 3, 4, 5]
  */
public static void main(String[] args) {
   List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5);
   
   String list2String = asList.toString();
   System.out.println(list2String);
   //使用replaceAll方法替換 中括號(hào)
   list2String = list2String.replaceAll("\\[|]", "");
   System.out.println(list2String);
}

第二種:Stream流轉(zhuǎn)String

java8 stream中提供了Collectors.join()方法可用于將集合轉(zhuǎn)成為具有指定分隔符、前綴和后綴的字符串。

public class Demo2 {

    /**
     * List 轉(zhuǎn) String
     * stream流中的Collections.joining方法
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("張三", "李四", "王武", null, "麻子");
        //java stream流中的Collections.joining方法
        //指定分隔符
        String collect = list.stream().collect(Collectors.joining(","));
        //沒(méi)有分隔符,直接拼接
        String collect1 = list.stream().collect(Collectors.joining());
        //指定分隔符,前綴,后綴
        String collect2 = list.stream().collect(Collectors.joining(",", "{", "}"));
        System.out.println(collect);//張三,李四,王武,null,麻子
        System.out.println(collect1);//張三李四王武null麻子
        System.out.println(collect2);//{張三,李四,王武,null,麻子}
    }
}

第三種:String.join()方法

java8 String添加了一個(gè)特殊的Join方法,用于將集合轉(zhuǎn)換為指定分隔符連接的字符串。

   /**
     * String.join()
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("張三", "李四", "王武", null, "麻子");
        String join = String.join(",", list);
        System.out.println(join);//張三,李四,王武,null,麻子
    }

第四種:StringUtils.join()方法

Apache commons包的外部庫(kù)有一個(gè)方法StringUtils.join() 方法,它類(lèi)似于 String.join() 方法,用于將集合轉(zhuǎn)成指定分隔符鏈接的字符串;但是,如果集合中有null的話(huà),會(huì)被轉(zhuǎn)換成空串。

   /**
     * StringUtils.join()
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("張三", "李四", "王武", null, "麻子");
        //StringUtils.join方法,集合中有null的話(huà),會(huì)轉(zhuǎn)成空串""
        String join = StringUtils.join(list, ",");
        System.out.println(join); //張三,李四,王武,,麻子
    }

第五種:自定義Join方法

java中提供了StringBuilder、StringBuffer兩個(gè)類(lèi),可以使用他們提供的append方法自定義join方法,將集合轉(zhuǎn)成字符串。

   /**
     * StringBuilder、StringBuffer的append()方法
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("張三", "李四", "王武", null, "麻子");
        //3. StringBuilder、StringBuffer的append方法自定義join方法
        StringBuilder sb = new StringBuilder();
        for (String s : list) {
            sb.append(s).append(",");
        }
        //sb.insert(0, "join如下:");
        if (sb.length() > 1) {
            sb.deleteCharAt(sb.length() - 1);
        }
        System.out.println(sb.toString()); //張三,李四,王武,null,麻子
    }

邏輯如上,上面邏輯可以封賬成一個(gè)通用的join方法

public class Demo2 {

    public static class ListJoin<E> {

        public String join(String delimiter, Collection<? extends E> list) {
            Objects.requireNonNull(delimiter);
            Objects.requireNonNull(list);
            StringBuilder result = new StringBuilder();
            for (E obj : list) {
                //根據(jù)需要對(duì)空進(jìn)行處理
                if (Objects.isNull(obj)) {
                    continue;
                }
                result.append(obj).append(delimiter);
            }
            if (result.length() > 1) {
                result.deleteCharAt(result.length() - 1);
            }

            return result.toString();
        }
    }

    /**
     * StringBuilder、StringBuffer的append()方法
     **/
    public static void main(String[] args) {
        List<String> list = Arrays.asList("張三", "李四", "王武", null, "麻子");
        //上述join方法可以修改成通用的join方法
        ListJoin<String> strDemo = new ListJoin<>();
        String join = strDemo.join(",", list);
        System.out.println(join); //張三,李四,王武,麻子

        ListJoin<Integer> intDemo = new ListJoin<>();
        List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5);
        String intJoin = intDemo.join("-", asList);
        System.out.println(intJoin); //1-2-3-4-5
    }
}

以上方式都可以將List集合轉(zhuǎn)成字符串,具體根據(jù)業(yè)務(wù)需要使用不同方式。

附:List轉(zhuǎn)String時(shí)注意事項(xiàng)

Object類(lèi)是所有對(duì)象類(lèi)的父類(lèi),而toString方法只能把那些可以轉(zhuǎn)換為字符串的類(lèi)型對(duì)象轉(zhuǎn)換為字符串,否則轉(zhuǎn)換后還是一個(gè)對(duì)象。

例如:

“woshizifuchuan”是一個(gè)String類(lèi)型的對(duì)象,“woshizifuchuan”.toString();結(jié)果還是“woshizifuchuan”;

Org是一個(gè)組織的對(duì)象,如果Org.toString();結(jié)果是不正常的,因?yàn)镺rg對(duì)象中可能有多個(gè)屬性,如組織名稱(chēng),組織等,這個(gè)toString后無(wú)法知道具體的是那個(gè)屬性轉(zhuǎn)換為字符串,所以就不會(huì)正常顯示。
備注:所有的java開(kāi)發(fā)都是有一定原則的,不是說(shuō)不報(bào)錯(cuò)就一切運(yùn)行ok,要根據(jù)實(shí)際情況進(jìn)行類(lèi)型轉(zhuǎn)換。

你先看一下Object類(lèi)中的toString()方法源碼:

public String toString() { 
return getClass().getName() +"@"+Integer.toHexString(hashCode()); //打印類(lèi)的全命名+內(nèi)存地址
} 

假如你的類(lèi)復(fù)寫(xiě)了Object類(lèi)(此類(lèi)為Java根基類(lèi))中的toString()方法;

例如:

public String toString(){ 
     return "name:" + this.name+ ", pwd:"+this.pwd;
    //這里才是你要返回的值 如果沒(méi)復(fù)寫(xiě)則調(diào)用Object類(lèi)中的toString()方法,所以具體輸出形式自己定
        }

還可以在項(xiàng)目中引入fastjson.jar包,將對(duì)象轉(zhuǎn)為字符串很簡(jiǎn)單的。
調(diào)用JSON.toJSONString(Org)轉(zhuǎn)為json字符串。

總結(jié)

到此這篇關(guān)于Java將List轉(zhuǎn)換為String的幾種常見(jiàn)方式的文章就介紹到這了,更多相關(guān)Java將List轉(zhuǎn)換為String內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java調(diào)用DeepSeek?api實(shí)現(xiàn)方法記錄

    Java調(diào)用DeepSeek?api實(shí)現(xiàn)方法記錄

    這篇文章主要介紹了如何在Java中調(diào)用DeepSeek?API,包括在官網(wǎng)獲取APIKeys、創(chuàng)建API請(qǐng)求工具類(lèi)以及處理返回結(jié)果的步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • SpringBoot與spring security的結(jié)合的示例

    SpringBoot與spring security的結(jié)合的示例

    這篇文章主要介紹了SpringBoot與spring security的結(jié)合的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • SpringBoot實(shí)現(xiàn)登錄攔截的示例代碼

    SpringBoot實(shí)現(xiàn)登錄攔截的示例代碼

    如果我們不進(jìn)行登錄攔截的話(huà),即使我們跳過(guò)登錄頁(yè)面直接去訪(fǎng)問(wèn)任意一個(gè)頁(yè)面也能訪(fǎng)問(wèn)成功,那么登錄功能就沒(méi)有意義,同時(shí)也會(huì)存在安全問(wèn)題,本文就來(lái)介紹一下SpringBoot登錄攔截,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Spring Cloud Feign報(bào)錯(cuò)問(wèn)題解決

    Spring Cloud Feign報(bào)錯(cuò)問(wèn)題解決

    這篇文章主要介紹了Spring Cloud Feign報(bào)錯(cuò)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java輸入輸出流的使用詳細(xì)介紹

    Java輸入輸出流的使用詳細(xì)介紹

    本篇文章介紹了,在Java中輸入輸出流的使用詳細(xì)分析。需要的朋友參考下
    2013-04-04
  • java實(shí)現(xiàn)數(shù)字猜拳小游戲

    java實(shí)現(xiàn)數(shù)字猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)數(shù)字猜拳的小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • swagger配置正式環(huán)境中不可訪(fǎng)問(wèn)的問(wèn)題

    swagger配置正式環(huán)境中不可訪(fǎng)問(wèn)的問(wèn)題

    這篇文章主要介紹了swagger配置正式環(huán)境中不可訪(fǎng)問(wèn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • springBoot整合shiro如何解決讀取不到@value值問(wèn)題

    springBoot整合shiro如何解決讀取不到@value值問(wèn)題

    這篇文章主要介紹了springBoot整合shiro如何解決讀取不到@value值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-08-08
  • Java實(shí)現(xiàn)屏幕截圖工具的代碼分享

    Java實(shí)現(xiàn)屏幕截圖工具的代碼分享

    這篇文章主要為大家介紹了如何利用Java語(yǔ)言編寫(xiě)一個(gè)電腦屏幕截圖工具,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的幫助,需要的可以參考一下
    2022-05-05
  • Java基于NIO實(shí)現(xiàn)群聊功能

    Java基于NIO實(shí)現(xiàn)群聊功能

    這篇文章主要為大家詳細(xì)介紹了Java基于NIO實(shí)現(xiàn)群聊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評(píng)論