<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java 把列表元素拼接字符串

      摘要:使用 Java Collectors.joining等方法把List中的所有元素通過指定的分隔符拼接為字符串。

      綜述

      ??在項目開發中,經常遇到的一個問題就是要把一個集合轉換成字符串,故在今天的分享中,我們將一起學習如何把列表中的所有元素連接成由指定分隔符分隔的字符串。本文使用的列表List如下:

      List<Integer> integerList = Stream.of(1, 2, 3, 6, 7, 9).collect(Collectors.toList());
      

      ??這種定義List的方式采用的是Java 8 的Stream,所構建的list支持動態擴容。

      使用For循環

      ??基于 for 循環拼接字符串是最常見的一個方法,示例如下:

          /**
           * 基于for 循環拼接字符串
           */
          public static String forMethod(List<Integer> list, String separator) {
              // 校驗是否為空
              if (list.isEmpty()) {
                  return "";
              }
              StringBuilder sb = new StringBuilder();
              for (int i = 0, len = list.size(); i < len; i++) {
                  sb.append(list.get(i)).append(separator);
              }
              //去掉最后一個分隔符號
              return sb.substring(0, sb.length() - 1);
          }
      

      StringUtils.join 函數

      ??使用封裝好的類StringUtils時,需要導入相關的包org.apache.commons.lang3.StringUtils,它依賴 jar 包 commons-lang3。

      public static String joinMethod(List<Integer> list, String separator) {
          return StringUtils.join(list, separator);
      }
      

      其源碼實現如下:

      public static String join(Iterable<?> iterable, String separator) {
          return iterable == null ? null : join(iterable.iterator(), separator);
      }
      

      ??第一個參數iterable表示實現了此接口的集合對象,集合Collection、List、Set都是Iterable的實現類;Iterable接口是Java集合框架的頂級接口,實現此接口使集合對象可以通過迭代器遍歷自身元素。

      ??第二個參數separator表示拼接集合元素的時候使用的分隔符,這樣一來就省去很多中間轉換的步驟,可以直接得到我們預期的字符串。

      Collectors.joining(Function) 函數

      ??Stream下的Collectors.joining(Function):用于將元素連接之后返回字符串,同樣可以自定義分隔符。

      public static String joiningMethod(List<Integer> list, String separator) {
          return list.stream()
                  .map(String::valueOf)
                  .collect(Collectors.joining(separator));
      }
      

      ??Stream的優秀之處就在于其可以同時處理其它業務邏輯,讓代碼邏輯更加的原汁原味、一氣呵成。如果純粹是拼接字符串的訴求,確實沒有必要使用它,畢竟殺雞焉用牛刀!但是我們可以在拼接字符串的同時,實現其它功能。讓我們通過下面的示例來感受一下使用Stream進行字符串拼接的真正魅力吧!

      public static String joiningPlusMethod(List<Integer> list, String separator) {
          return list.stream()
                  .map(String::valueOf)
                  .collect(Collectors.joining(separator, "[", "]"));
      }
      

      功能:結合Stream流操作,在拼接后的字符串前后添加中括號。彰明較著,其它函數無法直接實現這個需求。

      Guava Joiner join 函數

      ??使用 Google Guava 中的 com.google.common.base.Joiner 類拼接成字符串。

      public static String guavaJoinMethod(List<Integer> list, String separator) {
          return Joiner.on(separator).join(list);
      }
      

      ??返回一個字符串。該字符串是通過把 list 的每個元素轉換為字符串,然后把這些字符串連接起來,在兩個元素之間插入 separator 字符串而生成的。

      String.join 函數

      public static String stringJoinMethod(List<String> list, String separator) {
          return String.join(separator, list);
      }
      

      ??該函數只適用于字符串List,返回一個字符串。該字符串是通過把 list 的元素連接起來,在兩個元素之間插入 separator 字符串而生成的。

      ??總的示例如下:

      import org.apache.commons.lang3.StringUtils;
      import java.util.stream.Collectors;
      import java.util.stream.Stream;
      import com.google.common.base.Joiner;
      public static void main(String[] args) {
      
          String separator = "-";
          List<Integer> list = initList();
          String result = forMethod(list, separator);
          System.out.println("----- forMethod -----" + result);
          System.out.println("----- joinMethod -----" + joinMethod(list, separator));
          System.out.println("----- joiningPlusMethod 添加特殊符號-----" + joiningPlusMethod(list, delimiter));
      
          System.out.println("----- streamMapMethod -----" + joiningMethod(list, separator));
          System.out.println("----- guavaJoinMethod -----" + guavaJoinMethod(list, separator));
      
      }
      

      ??執行后,控制臺打印結果如下:

      ----- forMethod -----1-2-3-6-7-9
      ----- joinMethod -----1-2-3-6-7-9
      ----- streamMapMethod -----1-2-3-6-7-9
      ----- joiningPlusMethod 添加特殊符號-----[1-2-3-6-7-9]
      ----- guavaJoinMethod -----1-2-3-6-7-9
      

      結束語

      ??大家如果對于本文介紹的內容有不理解的地方,請在評論區留言。如果碰到【相關】問題也可以在評論區留言,和諸位互動交流。三人行必有我師,一起進步。大家可隨意盡情享用本文啦!

      posted @ 2023-04-15 12:40  樓蘭胡楊  閱讀(6938)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品国产一区二区三区国产馆| 亚洲理论在线A中文字幕| 国产精品一区二区中文| 国产精品无遮挡猛进猛出| 国产美女免费永久无遮挡| 动漫av网站免费观看| 久热在线中文字幕色999舞| 日本一区二区三区东京热| 99精品国产综合久久久久五月天| 久久一本人碰碰人碰| 又大又硬又爽免费视频| 蜜桃视频一区二区三区四| 人妻熟女欲求不满在线| 无码一区中文字幕| 放荡的少妇2欧美版| 国产精品午夜精品福利| 国产一区二区视频在线看| 亚洲AV永久无码嘿嘿嘿嘿| 亚洲国产一区二区三区| 亚洲精品动漫免费二区| 景谷| 中文字幕制服国产精品| 国产一区二区三区导航| 亚洲一区二区av偷偷| 亚洲男人的天堂一区二区| 国产区精品视频自产自拍| 亚洲精品码中文在线观看| 精品国产AV无码一区二区三区| 日本欧美大码a在线观看| 亚洲永久一区二区三区在线| 欧美黑人又粗又大又爽免费 | 国内精品自线在拍| 男人和女人做爽爽视频| 亚洲一区二区三区啪啪| 精选国产av精选一区二区三区| 亚洲中文字幕无码av在线| 你懂的亚洲一区二区三区| 无码伊人久久大杳蕉中文无码| 国产精品美女AV免费观看| 艳妇臀荡乳欲伦69调教视频| 免费人妻av无码专区|