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

Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)

 更新時間:2022年12月09日 14:30:08   作者:JadeTal  
這篇文章主要介紹了Java中將?int[]?數(shù)組?轉(zhuǎn)換為?List(ArrayList),本文通過示例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Java中數(shù)組轉(zhuǎn)List的四種方式

第一種方式(未必最佳):使用ArrayList.asList(strArray)

使用Arrays工具類Arrays.asList(strArray)方式,轉(zhuǎn)換完成后,只能對List數(shù)組進行查改,不能增刪,增刪就會拋出UnsupportedOperationException 異常

import java.util.Arrays;
import java.util.List; 
public static void Demo1() {
        String[] str = {"fgx", "lzy"};
        //注意這個List不是Collections包內(nèi)的List,而是util包里面的List接口
        List<String> ints = Arrays.asList(str);
    	//這里會報錯
        ints.add("laopo");
    }

添加數(shù)據(jù)報錯:

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at JAVA基礎(chǔ).JDK8新特性.Java數(shù)組轉(zhuǎn)List.Demo1(Java數(shù)組轉(zhuǎn)List.java:20)
at JAVA基礎(chǔ).JDK8新特性.Java數(shù)組轉(zhuǎn)List.main(Java數(shù)組轉(zhuǎn)List.java:13)

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

使用場景:Arrays.asList(strArray)方式僅能用在將數(shù)組轉(zhuǎn)換為List后,不需要增刪其中的值,僅作為數(shù)據(jù)源讀取使用。

第二種方法(支持增刪查改):

通過ArrayList的構(gòu)造器,將Arrays.asList(strArray)的返回值由java.utilArrays.ArrayList轉(zhuǎn)為java.util.ArrayList.
關(guān)鍵代碼:ArrayList list = new ArrayList(Arrays.asList(strArray)) ;

  String[] str = {"fgx", "lzy"};
        //注意這個List不是Collections包內(nèi)的List,而是util包里面的List接口
        java.util.ArrayList<String> strings = new ArrayList<>(Arrays.asList(str));
        strings.add("aop");
        strings.stream().forEach(System.out::println);

在這里插入圖片描述

使用場景:需要在將數(shù)組轉(zhuǎn)換為List后,對List進行增刪改查操作,在List的數(shù)據(jù)量不大的情況下,可以使用。

第三種方式(通過集合工具類Collections.addAll()方法(最高效))

通過Collections.addAll(arrayList, strArray)方式轉(zhuǎn)換,根據(jù)數(shù)組的長度創(chuàng)建一個長度相同的List,然后通過Collections.addAll()方法,將數(shù)組中的元素轉(zhuǎn)為二進制,然后添加到List中,這是最高效的方法。

 public static void Demo3() {
        //注意這個List不是Collections包內(nèi)的List,而是util包里面的List接口
        String[] str = {"fgx", "lzy"};
        java.util.ArrayList<String> stringList = new ArrayList<>(str.length);
        Collections.addAll(stringList,str);
    }

第四種方式通過JDK8的Stream流將3總基本類型數(shù)組轉(zhuǎn)為List

如果JDK版本在1.8以上,使用流stream來將下列3種數(shù)組快速轉(zhuǎn)為List,分別是int[],long[],double[],不支持short[ ],byte[ ],char[]在JDK1.8中暫不支持.

 int[] ints = {2, 34, 55, 22, 11};
        long[] longs = {1, 2, 3};
        double[] doubles = {1, 2, 3};
        Arrays.stream(ints).boxed().collect(Collectors.toList());
        Arrays.stream(longs).boxed().collect(Collectors.toList());
        Arrays.stream(doubles).boxed().collect(Collectors.toList());

TIPs:為什么int[]不能直接轉(zhuǎn)為List,而Integer[]可以轉(zhuǎn)為List,而Integer[]就可以轉(zhuǎn)為List了,因為List中的泛型必須是引用類型。

java數(shù)組轉(zhuǎn)list誤區(qū)

一、不能把基本數(shù)據(jù)類型轉(zhuǎn)化為列表

仔細觀察可以發(fā)現(xiàn)asList接受的參數(shù)是一個泛型的變長參數(shù),而基本數(shù)據(jù)類型是無法泛型化的,如下所示:

public  class  App {
   public  static  void  main(String[] args) {
     int [] intarray = { 1 ,  2 ,  3 ,  4 ,  5 };
     //List<Integer> list = Arrays.asList(intarray); 編譯通不過
     List< int []> list = Arrays.asList(intarray);
     System.out.println(list);
   }
}

output:
[[I @66d3c617 ]

這是因為把int類型的數(shù)組當參數(shù)了,所以轉(zhuǎn)換后的列表就只包含一個int[]元素。
解決方案:
要想把基本數(shù)據(jù)類型的數(shù)組轉(zhuǎn)化為其包裝類型的list,可以使用guava類庫的工具方法,示例如下:

int [] intArray = { 1 ,  2 ,  3 ,  4 };
List<Integer> list = Ints.asList(intArray);

二、asList方法返回的是數(shù)組的一個視圖

視圖意味著,對這個list的操作都會反映在原數(shù)組上,而且這個list是定長的,不支持add、remove等改變長度的方法。

public  class  App {
   public  static  void  main(String[] args) {
     int [] intArray = { 1 ,  2 ,  3 ,  4 };
     List<Integer> list = Ints.asList(intArray);
     list.set( 0 ,  100 );
     System.out.println(Arrays.toString(intArray));
     list.add( 5 );
     list.remove( 0 );
   }
}


output:
[ 100 ,  2 ,  3 ,  4 ]
UnsupportedOperationException
UnsupportedOperationException

下面介紹下Java中如何將 int[] 數(shù)組轉(zhuǎn)換為 List(ArrayList)

前言

說起數(shù)組轉(zhuǎn)換成 ArrayList,很多同學第一反應就是遍歷數(shù)組,將元素逐個添加到 ArrayList 中,但是這個看著就lower,一般不會這么答。

所以馬上就會想到Arrays工具類的 asList 方法,如果你這么答,那么恭喜你,答錯入坑。

為什么不能用 Arrays 的 asList 方法將 int[] 裝換成 ArrayList

如果此處數(shù)組 int[] 換作是 Integer[] 或者任何一個引用類型元素的數(shù)組都正確,Arrays 的 asList 方法只能轉(zhuǎn)換引用類型元素的數(shù)組。
asList 方法的源碼就是這么定義的:

 public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }


    private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable
    {

注意:Arrays.asList(T... a)返回的List中元素是不可變的。
從源碼可以看出Arrays.asList(T... a)返回的是一個ArrayList,但是這個ArrayList是Arrays的內(nèi)部類,不是我們集合框架下的那個ArrayList。

使用stream進行轉(zhuǎn)換(jdk8 推薦)

jdk版本低于1.8不可以使用。

數(shù)組通過 Arrays 工具類的 stream() 方法進行流化,獲取 Stream 對象。boxed()方法是用來裝箱的。

int[] arys = {1,2,3};
List<Integer> list = Arrays.stream(arys).boxed().collect(Collectors.toList());

要轉(zhuǎn)化為ArrayList還需要進行一次強制類型轉(zhuǎn)化

遍歷數(shù)組,逐個加入元素到List中

可以使用for、增強for循環(huán)、迭代器。
使用for循環(huán)遍歷數(shù)組,性能稍微好那么一丟丟。增強for的本質(zhì)就是迭代器,寫法更加簡潔。
這里代碼就做展示了。

到此這篇關(guān)于Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List(ArrayList)的文章就介紹到這了,更多相關(guān)Java 數(shù)組轉(zhuǎn)換為 List內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實用技巧:如何使用String去除開頭的第一個字符?

    Java實用技巧:如何使用String去除開頭的第一個字符?

    這篇文章主要介紹了Java實用技巧:如何使用String去除開頭的第一個字符,需要的朋友可以參考下
    2023-11-11
  • Java接口的回調(diào)機制的實現(xiàn)

    Java接口的回調(diào)機制的實現(xiàn)

    本文主要介紹了Java中回調(diào)機制的實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • 一文詳解Reactor模型與實現(xiàn)示例

    一文詳解Reactor模型與實現(xiàn)示例

    這篇文章主要為大家介紹了Reactor模型與實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • nacos單機版啟動失敗問題以及解決

    nacos單機版啟動失敗問題以及解決

    這篇文章主要介紹了nacos單機版啟動失敗問題以及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 在java中調(diào)用python腳本的三種方法

    在java中調(diào)用python腳本的三種方法

    實際工程項目中可能會用到Java和python兩種語言結(jié)合進行,這樣就會涉及到一個問題,就是怎么用Java程序來調(diào)用已經(jīng)寫好的python腳本呢,這篇文章主要給大家介紹了關(guān)于在java中調(diào)用python腳本的三種方法,需要的朋友可以參考下
    2023-09-09
  • java 較大數(shù)據(jù)量取差集,list.removeAll性能優(yōu)化詳解

    java 較大數(shù)據(jù)量取差集,list.removeAll性能優(yōu)化詳解

    這篇文章主要介紹了java 較大數(shù)據(jù)量取差集,list.removeAll性能優(yōu)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • MyBatis-Plus中的邏輯刪除使用詳解

    MyBatis-Plus中的邏輯刪除使用詳解

    開發(fā)系統(tǒng)時,有時候在實現(xiàn)功能時,刪除操作需要實現(xiàn)邏輯刪除就是將數(shù)據(jù)標記為刪除,而并非真的物理刪除(非DELETE操作),查詢時需要攜帶狀態(tài)條件,確保被標記的數(shù)據(jù)不被查詢到。這樣做的目的就是避免數(shù)據(jù)被真正的刪除
    2022-12-12
  • springboot接收日期字符串參數(shù)與返回日期字符串類型格式化

    springboot接收日期字符串參數(shù)與返回日期字符串類型格式化

    這篇文章主要介紹了springboot接收日期字符串參數(shù)與返回日期字符串類型格式化,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java鏈表中添加元素的原理與實現(xiàn)方法詳解

    Java鏈表中添加元素的原理與實現(xiàn)方法詳解

    這篇文章主要介紹了Java鏈表中添加元素的原理與實現(xiàn)方法,結(jié)合實例形式詳細分析了Java實現(xiàn)鏈表中添加元素的相關(guān)原理、操作技巧與注意事項,需要的朋友可以參考下
    2020-03-03
  • Java如何判斷一個空對象的常見方法

    Java如何判斷一個空對象的常見方法

    在Java中判斷對象是否為空是一項重要的編程技巧,可以有效防止空指針異常的發(fā)生,下面這篇文章主要給大家介紹了關(guān)于利用Java如何判斷一個空對象的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評論

怀柔区| 太白县| 天门市| 万山特区| 台南市| 新绛县| 永吉县| 肇源县| 五莲县| 乐亭县| 翁源县| 札达县| 英超| 香港| 霍州市| 沛县| 吉林市| 洪江市| 武平县| 姚安县| 南木林县| 昌宁县| 岳阳市| 台北县| 鹤壁市| 太和县| 平安县| 宝应县| 中西区| 镇原县| 徐汇区| 区。| 梅州市| 天门市| 陵川县| 合川市| 长垣县| 铅山县| 泸定县| 无锡市| 安仁县|