最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java數組轉換為List的四種方式

 更新時間:2023年09月13日 11:18:36   作者:極光雨雨  
這篇文章主要介紹了Java開發(fā)技巧數組轉List的四種方式總結,每種方式結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

第一種 Arrays.asList

即 Java.util 提供的 Arrays 中的 asList 方法,可以直接將一般的字符串數組以及包裝類后的結果做直接轉換。

需要注意的是 :通過這種方式得到的List 不能執(zhí)行增刪操作,否則會拋出java.lang.UnsupportedOperationException 異常,即不支持操作的異常,一般的獲取get, size等可以照常使用

: Arrays.asList(str)返回值是java.util.Arrays類中一個私有靜態(tài)內部類 java.utiil.Arrays.Arraylist,不是我們平時用的java.util.ArrayList();

適用于 只轉換后作為讀取的目標,不能用于增刪操作

示例代碼如下:

// 引用類型
        Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        String[] strings = {"dd", "aa", "545", "ee"};
        // 基本類型
        int[] cardNumberArrayInt = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        // 元素轉換成功
        List<Integer> integers = Arrays.asList(cardNumberArray);
        List<String> list = Arrays.asList(strings);
        // 出現了基本類型
        List<int[]> ints = Arrays.asList(cardNumberArrayInt);
        // 執(zhí)行了添加操作 結果出錯
        integers.add(15);

同時可以看的出 上面如果直接使用了 int[] 這種基本類型, 轉換時并不是我們預期的 int 而且把 int[] 認為了是一個泛型中的基本類型,泛型中不支持基本數據類型,所以如果非要使用盡量轉為包裝類,除非只做基本的運算。

asList 返回的是一個視圖,簡單來說只能看和讀取,不能執(zhí)行其他操作

總的來說這種方式泛用性不是很強

第二種 ArrayList 構造方法

將第一種 Arrays.asList 的返回值作為 arrayList 夠構造方法的入參,即可構造出可以進行增刪操的正常 list代碼如下:

// 引用類型
        Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        String[] strings = {"dd", "aa", "545", "ee"};
        List<Integer> arrayList1 = new ArrayList<>(Arrays.asList(cardNumberArray));
        List<String> arrayList2 = new ArrayList<>(Arrays.asList(strings));

適用于 數組轉為需要執(zhí)行增刪等正常操作的 list,同時數據量不是太大

第三種 Collections.addAll

通過 Collections.addAll(要賦值的list, 原有l(wèi)ist);

同樣是 JDK 自帶的 Collections, 先創(chuàng)建一個對應的 list 并賦予原有數組長度,然后給與賦值Collections.addAll() 會將數組中的元素轉為二進制,然后添加到List中。這種方法 效率相對較高

示例代碼如下:

// 引用類型
        Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        List arrayList = new ArrayList<>(cardNumberArray.length);
        Collections.addAll(arrayList, cardNumberArray);

第四種 JDK8 特性 Stream

JDK 1.8 支持的 基本類型轉換 int[],long[],double[]

不支持的 short[ ],byte[ ],char[]

示例代碼如下:

// 基本類型
        int[] cardNumberArrayInt = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        List<Integer> collect1 = Arrays.stream(cardNumberArrayInt).boxed().collect(Collectors.toList());

其他支持的 long[] 以及 double[] 與上面類似

同樣的引用類型也可以使用這種方式:

Integer[] cardNumberArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<Integer> collect = Arrays.stream(cardNumberArray).collect(Collectors.toList());

引用類型與基礎類型相比 少了 boxed 這一過程,是一個轉包裝類的過程。對于Stream 不太熟悉的可以參考我的另一篇對 Stream 使用的描述

Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)等學習和使用理解及案例

到此這篇關于Java開發(fā)技巧 數組轉List的四種方式總結的文章就介紹到這了,更多相關java數組轉list內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot使用Redis存儲Session實踐

    SpringBoot使用Redis存儲Session實踐

    本文介紹了Session的基本概念、工作流程和常見應用場景,并詳細解釋了如何在JavaServlet中使用Session,接著,文章討論了Redis存儲Session的優(yōu)勢和配置方法,并提供了一個示例代碼,最后,總結了如何使用Redis存儲Session以及注意事項
    2026-02-02
  • SpringBoot啟動失敗的解決方法:A component required a bean of type ‘xxxxxxx‘ that could not be found.

    SpringBoot啟動失敗的解決方法:A component required a&nb

    這篇文章主要介紹了解決SpringBoot啟動失?。篈 component required a bean of type ‘xxxxxxx‘ that could not be found.,目前解決方法有兩種,一種是不注入bean的方式,另一種是使用@Component的方式,本文給大家詳細講解,需要的朋友可以參考下
    2023-02-02
  • Java面試題目集錦

    Java面試題目集錦

    本文是小編日常收集整理的java面試題目,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • Spring-基于Spring使用自定義注解及Aspect實現數據庫切換操作

    Spring-基于Spring使用自定義注解及Aspect實現數據庫切換操作

    這篇文章主要介紹了Spring-基于Spring使用自定義注解及Aspect實現數據庫切換操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 簡單談談Java 中的線程的幾種狀態(tài)

    簡單談談Java 中的線程的幾種狀態(tài)

    這篇文章主要介紹了簡單談談Java 中的線程的幾種狀態(tài)的相關資料,需要的朋友可以參考下
    2020-02-02
  • Java虛擬機類加載器之雙親委派機制模型案例

    Java虛擬機類加載器之雙親委派機制模型案例

    這篇文章主要介紹了Java虛擬機類加載器之雙親委派機制模型案例,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 深入解析Spring?Boot?的SPI機制詳情

    深入解析Spring?Boot?的SPI機制詳情

    這篇文章主要介紹了深入解析Spring?Boot的SPI機制詳情,SPI是JDK內置的一種服務提供發(fā)現機制,可以用來啟用框架擴展和替換組件,主要用于框架中開發(fā),更多相關介紹,感興趣的小伙伴可以參考一下下面文章內容
    2022-08-08
  • Spring boot集中異常處理方法實例

    Spring boot集中異常處理方法實例

    這篇文章主要介紹了Spring boot集中異常處理方法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java?BigDecimal與RoundingMode最常用的用法總結

    Java?BigDecimal與RoundingMode最常用的用法總結

    RoundingMode是Java中定義舍入行為的枚舉類,包括UP、DOWN、CEILING等8種模式,適用于精確數字運算,這篇文章主要介紹了Java?BigDecimal與RoundingMode最常用用法總結的相關資料,需要的朋友可以參考下
    2025-12-12
  • 線程池之newCachedThreadPool可緩存線程池的實例

    線程池之newCachedThreadPool可緩存線程池的實例

    這篇文章主要介紹了線程池之newCachedThreadPool可緩存線程池的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

青海省| 原阳县| 苍南县| 滁州市| 云霄县| 临西县| 沈丘县| 南丹县| 新蔡县| 丹巴县| 达拉特旗| 湖南省| 达孜县| 陇南市| 肥东县| 海丰县| 墨竹工卡县| 萍乡市| 定西市| 靖江市| 乌拉特中旗| 富民县| 吉首市| 长岛县| 皮山县| 新乡市| 大同县| 普定县| 宜昌市| 桐柏县| 子长县| 雷波县| 长乐市| 惠安县| 沐川县| 阿克陶县| 阿图什市| 清远市| 鲁甸县| 车致| 陆良县|