詳解Java如何在Array和List之間進(jìn)行轉(zhuǎn)換
概述
在本文章中,我們對(duì)如何在 Java 中對(duì) Array 和 List 進(jìn)行轉(zhuǎn)換進(jìn)行一些說明和示例。
這些示例通過使用 Core Java 和一些第三方的轉(zhuǎn)換工具,例如 Guava 和 Apache Commons Collections。
更多有關(guān)的文章,請(qǐng)?jiān)L問:Java - OSSEZ 相關(guān)的內(nèi)容和參與討論。
從 List 轉(zhuǎn)換為 Array
使用原生 Java 代碼
我們可以使用原生 Java 代碼來進(jìn)行轉(zhuǎn)換,在 List 中有一個(gè) toArray 的方法,直接使用就可以了。
@Test public final void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() { final List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); final Integer[] targetArray = sourceList.toArray(new Integer[0]); }
需要注意的是,我們?cè)谶@里使用了
toArray(new T[0])
來對(duì)變量進(jìn)行初始化,相對(duì)使用
toArray(new T[size])
這個(gè)方法。
使用
toArray(new T[0])
來對(duì)數(shù)組進(jìn)行初始化更加安全,快速,易讀。
使用 Guava
讓我們來使用 Guava API 來進(jìn)行相同的轉(zhuǎn)換:
@Test public final void givenUsingGuava_whenListConvertedToArray_thenCorrect() { final List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); final int[] targetArray = Ints.toArray(sourceList); }
Ints 中有一個(gè) toArray 的方法,這個(gè)方法將會(huì)把整數(shù)類型的 List 轉(zhuǎn)換為 Array。
把 Array 轉(zhuǎn)換為 List
使用原生 Java
讓我們使用原生的 Java 來把數(shù)組轉(zhuǎn)換為 List。
直接只用 JDK 中的 Arrays 來進(jìn)行轉(zhuǎn)換就可以了。
@Test public void givenUsingCoreJava_whenArrayConvertedToList_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; List<Integer> targetList = Arrays.asList(sourceArray); }
需要注意的是,這個(gè)方法轉(zhuǎn)換的 List 是固定長(zhǎng)度的 List,你就沒有辦法對(duì)這個(gè) List 進(jìn)行相關(guān)操作了。
如果你是希望使用基本的
ArrayList
的話,我們可以簡(jiǎn)單的使用
ArrayList
來對(duì)其進(jìn)行實(shí)例化。
如下面的代碼來進(jìn)行實(shí)例化:
List<Integer> targetList = new ArrayList<Integer>(Arrays.asList(sourceArray));
使用 Guava
讓我們來使用 Guava API 來進(jìn)行相同的轉(zhuǎn)換:
@Test public void givenUsingGuava_whenArrayConvertedToList_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; List<Integer> targetList = Lists.newArrayList(sourceArray); }
使用 Commons 集合
最后,我們來看看如何使用 Apache Commons Collections 的
CollectionUtils.addAll
API 來把 Array 的內(nèi)容填充到一個(gè)空的 List:
@Test public void givenUsingCommonsCollections_whenArrayConvertedToList_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; List<Integer> targetList = new ArrayList<>(6); CollectionUtils.addAll(targetList, sourceArray); }
這個(gè)方法,我們使用的是 CollectionUtils 的工具類來進(jìn)行添加的。
結(jié)論
在 Java 的集合類型直接進(jìn)行轉(zhuǎn)換是我們需要經(jīng)常進(jìn)行操作的方法和需求。
上面介紹了幾種基本的轉(zhuǎn)換方法,根據(jù)我們的實(shí)際使用經(jīng)驗(yàn),使用 Guava 的 Lists 來把 Array 轉(zhuǎn)換為 List 是我們常用的方法。并且創(chuàng)建的 List 也是可變的。
使用 Commons Collections 的這個(gè)方法是通過 Add 的方法的,感覺這個(gè)方法也比較簡(jiǎn)單,但是用得有點(diǎn)晦澀。
以上就是詳解Java 如何在 Array 和 List 之間進(jìn)行轉(zhuǎn)換方法的詳細(xì)內(nèi)容,更多關(guān)于Java在Array List間轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java事務(wù)管理學(xué)習(xí)之Hibernate詳解
hibernate是jdbc輕量級(jí)的封裝,本身不具備事務(wù)管理的能力,在事物管理層面,一般是委托于底層的jdbc和jta來完成調(diào)度的。下面這篇文章主要給大家介紹了Java事務(wù)管理學(xué)習(xí)之Hibernate的相關(guān)資料,需要的朋友可以參考下。2017-03-03解析java基本數(shù)據(jù)類型傳遞與引用傳遞區(qū)別
這篇文章主要介紹了java基本數(shù)據(jù)類型傳遞與引用傳遞區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03一個(gè)Servlet是如何處理多個(gè)請(qǐng)求的?
以前我一直以為一個(gè)Servlet只能處理一個(gè)請(qǐng)求,后來發(fā)現(xiàn)是自己太菜了,可以借助攜帶一個(gè)參數(shù)來完成多個(gè)請(qǐng)求的處理,根據(jù)參數(shù)的不同,在核心的service方法中調(diào)用不同的業(yè)務(wù)方法,來實(shí)現(xiàn)處理多個(gè)servlet請(qǐng)求的目的,廢話不多說,直接上代碼,需要的朋友可以參考下2021-06-06Java+Spring+MySql環(huán)境中安裝和配置MyBatis的教程
這篇文章主要介紹了Java+Spring+MySql環(huán)境中安裝和配置MyBatis的教程,MyBatis一般被用來增強(qiáng)數(shù)據(jù)庫操作,文中對(duì)MyBatis的主配置文件有較為詳細(xì)的講解,需要的朋友可以參考下2016-04-04Java?BigDecimal類的一般使用、BigDecimal轉(zhuǎn)double方式
這篇文章主要介紹了Java?BigDecimal類的一般使用、BigDecimal轉(zhuǎn)double方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01