Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List分享
前言
說起數(shù)組轉(zhuǎn)換成 ArrayList,很多同學(xué)第一反應(yīng)就是遍歷數(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進(jìn)行轉(zhuǎn)換(jdk8 推薦)
jdk版本低于1.8不可以使用。
數(shù)組通過 Arrays 工具類的 stream() 方法進(jìn)行流化,獲取 Stream 對象。boxed()方法是用來裝箱的。
int[] arys = {1,2,3}; List<Integer> list = Arrays.stream(arys).boxed().collect(Collectors.toList());
要轉(zhuǎn)化為ArrayList還需要進(jìn)行一次強(qiáng)制類型轉(zhuǎn)化
遍歷數(shù)組,逐個加入元素到List中
可以使用for、增強(qiáng)for循環(huán)、迭代器。
使用for循環(huán)遍歷數(shù)組,性能稍微好那么一丟丟。增強(qiáng)for的本質(zhì)就是迭代器,寫法更加簡潔。
這里代碼就做展示了。
到此這篇關(guān)于Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List分享的文章就介紹到這了,更多相關(guān)Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用3個實(shí)例從原理到實(shí)戰(zhàn)講清楚Log4j史詩級漏洞
最近應(yīng)該很多人都在關(guān)注著一個漏洞Apache Log4j 2遠(yuǎn)程代碼執(zhí)行,該漏洞一旦被攻擊者利用會造成嚴(yán)重危害,這篇文章主要給大家介紹了關(guān)于如何用3個實(shí)例從原理到實(shí)戰(zhàn)講清楚Log4j史詩級漏洞的相關(guān)資料,需要的朋友可以參考下2021-12-12java實(shí)現(xiàn)zip,gzip,7z,zlib格式的壓縮打包
本文是利用Java原生類和apache的commons實(shí)現(xiàn)zip,gzip,7z,zlib的壓縮打包,如果你要是感興趣可以進(jìn)來了解一下。2016-10-10Java使用設(shè)計(jì)模式中迭代器模式構(gòu)建項(xiàng)目的代碼結(jié)構(gòu)示例
這篇文章主要介紹了Java使用設(shè)計(jì)模式中迭代器模式構(gòu)建項(xiàng)目的代碼結(jié)構(gòu)示例,迭代器模式能夠?qū)υL問者隱藏對象的內(nèi)部細(xì)節(jié),需要的朋友可以參考下2016-05-05spring?retry方法調(diào)用失敗重試機(jī)制示例解析
這篇文章主要為大家介紹了spring?retry方法調(diào)用失敗重試機(jī)制的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03Java中byte、byte數(shù)組與int、long的轉(zhuǎn)換詳解
這篇文章分別給大家介紹了Java中byte和int之間的轉(zhuǎn)換、Java中 byte數(shù)組和int之間的轉(zhuǎn)換、Java中byte數(shù)組和long之間的轉(zhuǎn)換以及整理了整體工具類的源碼,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02java實(shí)現(xiàn)protocol傳輸?shù)目蛻舳撕头?wù)端的示例代碼
本文主要介紹了java實(shí)現(xiàn)protocol傳輸?shù)目蛻舳撕头?wù)端的示例代碼,基于TCP協(xié)議的客戶端和服務(wù)端,包括了基本的連接、消息傳遞和關(guān)閉連接的操作,感興趣的可以了解一下2024-07-07Java獲取服務(wù)器IP及端口的方法實(shí)例分析
這篇文章主要介紹了Java獲取服務(wù)器IP及端口的方法,結(jié)合實(shí)例形式分析了java針對客戶端及服務(wù)器端各種常見的信息操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-12-12Java ArrayList.toArray(T[]) 方法的參數(shù)類型是 T 而不是 E的原因分析
這篇文章主要介紹了Java ArrayList.toArray(T[]) 方法的參數(shù)類型是 T 而不是 E的原因分析的相關(guān)資料,需要的朋友可以參考下2016-04-04IntelliJ IDEA之配置JDK的4種方式(小結(jié))
這篇文章主要介紹了IntelliJ IDEA之配置JDK的4種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10