<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一分鐘學(xué)會一行代碼創(chuàng)建不可變集合!

          共 1640字,需瀏覽 4分鐘

           ·

          2022-05-23 19:43

          在Java 9中又新增了一些API來幫助便捷的創(chuàng)建不可變集合,以減少代碼復(fù)雜度。

          本期配套視頻:

          常規(guī)寫法

          以往我們創(chuàng)建一些不可變集合的時候,通常是這樣寫的:

          //?不可變的Set
          Set?set?=?new?HashSet<>();
          set.add("a");
          set.add("b");
          set.add("c");
          set?=?Collections.unmodifiableSet(set);

          //?不可變的List
          List?list?=?new?ArrayList<>();
          list.add(1);
          list.add(2);
          list.add(3);
          list?=?Collections.unmodifiableList(list);

          Java8的寫法

          在Java 8的時候,利用Stream API還能簡化一下,可以演變成這樣:

          Set?set?=?Collections.unmodifiableSet(Stream.of("a",?"b",?"c").collect(toSet()));
          List?list?=?Collections.unmodifiableList(Stream.of(1,?2,?3).collect(toList()));

          Java9的寫法

          而現(xiàn)在到了Java 9,這一操作變的更為簡單,只需要這樣:

          Set?set?=?Set.of("a",?"b",?"c");
          List?list?=?List.of(1,?2,?3);

          同時,對于一下更復(fù)雜的集合也一樣支持,比如Map類型也可以這樣寫:

          Map?map?=?Map.of("a",?"1",?"b",?"2",?"c",?"3");

          就是要注意下,Map.of的參數(shù)是key和value成對出現(xiàn)的,所以參數(shù)數(shù)量一定是偶數(shù):

          Map.of()
          Map.of(k1,?v1)
          Map.of(k1,?v1,?k2,?v2)
          Map.of(k1,?v1,?k2,?v2,?k3,?v3)
          ...

          與asList的區(qū)別

          看到這里,可能有的人會問了,之前不是對于集合有asXxx這樣的方便方法了么?他們有啥區(qū)別嗎?

          這里就以List.ofArrays.asList為例,給大家列一下它們的異同:

          1. Java 9中推出List.of創(chuàng)建的是不可變集合,而Arrays.asList是可變集合

          2. List.ofArrays.asList都不允許add和remove元素,但Arrays.asList可以調(diào)用set更改值,而List.of不可以,會報java.lang.UnsupportedOperationException異常

          3. List.of中不允許有null值,Arrays.asList中可以有null值

          好了,今天的分享就到這里!

          我們創(chuàng)建了一個高質(zhì)量的技術(shù)交流群,與優(yōu)秀的人在一起,自己也會優(yōu)秀起來,趕緊點擊加群,享受一起成長的快樂。另外,如果你最近想跳槽的話,年前我花了2周時間收集了一波大廠面經(jīng),節(jié)后準備跳槽的可以點擊這里領(lǐng)取

          推薦閱讀

          ··································

          你好,我是程序猿DD,10年開發(fā)老司機、阿里云MVP、騰訊云TVP、出過書創(chuàng)過業(yè)、國企4年互聯(lián)網(wǎng)6年。從普通開發(fā)到架構(gòu)師、再到合伙人。一路過來,給我最深的感受就是一定要不斷學(xué)習(xí)并關(guān)注前沿。只要你能堅持下來,多思考、少抱怨、勤動手,就很容易實現(xiàn)彎道超車!所以,不要問我現(xiàn)在干什么是否來得及。如果你看好一個事情,一定是堅持了才能看到希望,而不是看到希望才去堅持。相信我,只要堅持下來,你一定比現(xiàn)在更好!如果你還沒什么方向,可以先關(guān)注我,這里會經(jīng)常分享一些前沿資訊,幫你積累彎道超車的資本。

          點擊領(lǐng)取2022最新10000T學(xué)習(xí)資料
          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码一区二区免费三区在线 | 成人午夜无码 | 精品国产日批 | 亚洲美女高潮喷水 | 色丁香五月激情 |