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

Java中List與數(shù)組之間的相互轉(zhuǎn)換

 更新時(shí)間:2023年05月23日 11:09:00   作者:開(kāi)發(fā)小鴿  
在日常Java學(xué)習(xí)或項(xiàng)目開(kāi)發(fā)中,經(jīng)常會(huì)遇到需要int[]數(shù)組和List列表相互轉(zhuǎn)換的場(chǎng)景,然而往往一時(shí)難以想到有哪些方法,最后可能會(huì)使用暴力逐個(gè)轉(zhuǎn)換法,往往不是我們所滿(mǎn)意的,下面這篇文章主要給大家介紹了關(guān)于Java中List與數(shù)組之間的相互轉(zhuǎn)換,需要的朋友可以參考下

一、前言

在Java編碼中,我們經(jīng)常會(huì)遇到List與數(shù)組的轉(zhuǎn)換,包括對(duì)象List與對(duì)象數(shù)組的轉(zhuǎn)換,以及對(duì)象List與基本數(shù)據(jù)類(lèi)型數(shù)組的轉(zhuǎn)換,下面詳細(xì)介紹多種轉(zhuǎn)換方式。

二、List列表與對(duì)象數(shù)組

List列表中存儲(chǔ)對(duì)象,如List<Integer>、List<String>、List<Person>,對(duì)象數(shù)組中同樣存儲(chǔ)相應(yīng)的對(duì)象,如Integer[]、String[]、Person[],對(duì)象數(shù)組與對(duì)象List的轉(zhuǎn)換可通過(guò)如下方式實(shí)現(xiàn):

(一)對(duì)象List轉(zhuǎn)對(duì)象數(shù)組

1、toArray()方法

直接調(diào)用對(duì)象List的toArray()方法轉(zhuǎn)換為對(duì)象數(shù)組,該方法的參數(shù)是T[],因此需要傳入對(duì)應(yīng)的對(duì)象數(shù)組構(gòu)造函數(shù),指定數(shù)組的長(zhǎng)度,如下所示:

ArrayList<Integer> integersList = new ArrayList<>(Arrays.asList(1,2,3)); 
// 1、toArray()方法
Integer[] integersArrau = integersList.toArray(new Integer[integersList.size()]);

2、Stream流的toArray()方法

通過(guò)Stream流的toArray()方法,傳入?yún)?shù)是對(duì)應(yīng)對(duì)象的構(gòu)造方法的方法引用,使用方式如下所示:

ArrayList<Integer> integersList = new ArrayList<>(Arrays.asList(1,2,3));
// 2、Stream流的toArray()方法
Integer[] integersArray2 = integersList.stream().toArray(Integer[]::new);

這個(gè)toArray()方法是Stream類(lèi)下的,該方法說(shuō)明如下所示:

/**
 * Returns an array containing the elements of this stream, using the
 * provided {@code generator} function to allocate the returned array, as
 * well as any additional arrays that might be required for a partitioned
 * execution or for resizing.
 *
 * <p>This is a <a href="package-summary.html#StreamOps" rel="external nofollow" >terminal
 * operation</a>.
 *
 * @apiNote
 * The generator function takes an integer, which is the size of the
 * desired array, and produces an array of the desired size.  This can be
 * concisely expressed with an array constructor reference:
 * <pre>{@code
 *     Person[] men = people.stream()
 *                          .filter(p -> p.getGender() == MALE)
 *                          .toArray(Person[]::new);
 * }</pre>
 *
 * @param <A> the element type of the resulting array
 * @param generator a function which produces a new array of the desired
 *                  type and the provided length
 * @return an array containing the elements in this stream
 * @throws ArrayStoreException if the runtime type of the array returned
 * from the array generator is not a supertype of the runtime type of every
 * element in this stream
 */
<A> A[] toArray(IntFunction<A[]> generator);

該方法傳入一個(gè)函數(shù)式接口,該接口對(duì)應(yīng)一個(gè)方法引用,作用是創(chuàng)建一個(gè)新的指定類(lèi)型和長(zhǎng)度的數(shù)組,因此我們傳入的參數(shù)就是一個(gè)Integer[]數(shù)組的構(gòu)造方法的方法引用,最終得到的也就是一個(gè)Integer[]數(shù)組。

3、for循環(huán)

過(guò)于簡(jiǎn)單,不再贅述。

(二)、對(duì)象數(shù)組轉(zhuǎn)對(duì)象List

1、使用Arrays.asList()

該方法通過(guò)傳入一個(gè)對(duì)象數(shù)組,最后轉(zhuǎn)換為一個(gè)對(duì)象List,如下所示:

Integer[] integersArray = {1, 2, 3};
// 1、使用Arrays.asList()
List<Integer> integersList = Arrays.asList(integersArray);

asList方法傳入的參數(shù)是一個(gè)可變參數(shù),因此既可以傳入多個(gè)參數(shù),也可以傳入一個(gè)數(shù)組,如下所示:

/**
 * Returns a fixed-size list backed by the specified array.  (Changes to
 * the returned list "write through" to the array.)  This method acts
 * as bridge between array-based and collection-based APIs, in
 * combination with {@link Collection#toArray}.  The returned list is
 * serializable and implements {@link RandomAccess}.
 *
 * <p>This method also provides a convenient way to create a fixed-size
 * list initialized to contain several elements:
 * <pre>
 *     List&lt;String&gt; stooges = Arrays.asList("Larry", "Moe", "Curly");
 * </pre>
 *
 * @param <T> the class of the objects in the array
 * @param a the array by which the list will be backed
 * @return a list view of the specified array
 */
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

2、使用Collections.addAll()

通過(guò)Collections集合類(lèi)的static方法將一個(gè)對(duì)象數(shù)組轉(zhuǎn)換為對(duì)象List,注意首先要?jiǎng)?chuàng)建出一個(gè)對(duì)象List,使用方式如下所示:

Integer[] integersArray = {1, 2, 3};
// 2、使用Collections.addAll()
ArrayList<Integer> integersList2 = new ArrayList<>();
Collections.addAll(integersList2,integersArray);

3、使用Stream中的Collector

JDK8之后可以使用Stream流來(lái)執(zhí)行轉(zhuǎn)換操作,通過(guò)Stream流的終結(jié)操作collect來(lái)指定將要轉(zhuǎn)換得到的List:

Integer[] integersArray = {1, 2, 3};
// 3、使用Stream中的Collector
List<Integer> integersList3 = Arrays.stream(integersArray).collect(Collectors.toList());

4、for循環(huán)

過(guò)于簡(jiǎn)單,不再贅述。

三、List列表與基本數(shù)據(jù)類(lèi)型數(shù)組

上面我們介紹了對(duì)象List列表與對(duì)象數(shù)組之間的轉(zhuǎn)換,但是有些情況需要直接將對(duì)象List轉(zhuǎn)換為基本數(shù)據(jù)類(lèi)型數(shù)組,如List<Integer>轉(zhuǎn)int[]這種情況,下面詳細(xì)介紹。

(一)、對(duì)象List轉(zhuǎn)基本數(shù)據(jù)類(lèi)型數(shù)組

1、Stream流執(zhí)行轉(zhuǎn)換

通過(guò)Stream流執(zhí)行轉(zhuǎn)換,如List<Integer>轉(zhuǎn)換為int[],通過(guò)Stream流的mapToInt()可將每個(gè)Integer轉(zhuǎn)換為int,再輸出為int數(shù)組,如下所示:

ArrayList<Integer> integersList = new ArrayList<>(Arrays.asList(1,2,3));
// 1、Stream流執(zhí)行轉(zhuǎn)換
// 方法引用
int[] arrays1 = integersList.stream().mapToInt(Integer::intValue).toArray();
// lambda表達(dá)式
int[] arrays2 = integersList.stream().mapToInt(i -> i).toArray();

2、for循環(huán)

過(guò)于簡(jiǎn)單,不再贅述。

(二)、基本數(shù)據(jù)類(lèi)型數(shù)組轉(zhuǎn)對(duì)象List

1、Stream流轉(zhuǎn)換

以int[]數(shù)組來(lái)舉例,通過(guò)Stream流的mapToObj()方法先將int[]數(shù)組中每個(gè)int值轉(zhuǎn)換為Integer包裝類(lèi),再通過(guò)collect執(zhí)行終結(jié)操作轉(zhuǎn)換為Integer的List。

int[] integersArray = {1, 2, 3};
// 1、Stream流轉(zhuǎn)換
List<Integer> integersList = Arrays.stream(integersArray).mapToObj(Integer::new).collect(Collectors.toList());

2、for循環(huán)

for循環(huán)是最簡(jiǎn)單、好用的方式,不再贅述。

注意,二維數(shù)組中的 list.toArray(array) 方法不能用于一維的 int[] 中。

因?yàn)?toArray() 方法的參數(shù)是范型對(duì)象,而 int 是標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型。可以用 Interger[]來(lái)實(shí)現(xiàn)

總結(jié)

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

相關(guān)文章

  • Spring Boot與Docker部署詳解

    Spring Boot與Docker部署詳解

    本篇文章主要介紹了Spring Boot與Docker部署詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • SpringBoot整合logback日志的詳細(xì)步驟

    SpringBoot整合logback日志的詳細(xì)步驟

    這篇文章主要介紹了SpringBoot整合logback日志的詳細(xì)步驟,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • 一文帶你掌握J(rèn)ava中Scanner類(lèi)的使用

    一文帶你掌握J(rèn)ava中Scanner類(lèi)的使用

    Scanner類(lèi)是java.util包中的一個(gè)類(lèi),常用于控制臺(tái)的輸入,當(dāng)需要使用控制臺(tái)輸入時(shí)即可調(diào)用這個(gè)類(lèi)。本文將通過(guò)一些簡(jiǎn)單的例子為大家介紹一下Java中Scanner類(lèi)的使用,需要的可以參考一下
    2023-04-04
  • Jpa中自定義枚舉映射方式

    Jpa中自定義枚舉映射方式

    本文介紹了JPA中枚舉映射的方式,默認(rèn)可用@Enumerated注解實(shí)現(xiàn)按名稱(chēng)或序號(hào)映射;若需按枚舉屬性自定義映射,則可用@Convert注解結(jié)合枚舉轉(zhuǎn)換器靈活實(shí)現(xiàn)
    2025-10-10
  • SpringMVC核心技術(shù)

    SpringMVC核心技術(shù)

    這篇文章主要介紹了SpringMVC入門(mén)實(shí)例,在springmvc入門(mén)教程里算是比較不錯(cuò)的,結(jié)構(gòu)也比較完整,需要的朋友可以參考。希望可以幫助到你
    2021-07-07
  • Java數(shù)組聲明、創(chuàng)建、初始化基礎(chǔ)

    Java數(shù)組聲明、創(chuàng)建、初始化基礎(chǔ)

    本文講述了Java數(shù)組的幾個(gè)相關(guān)的方面,講述了對(duì)Java數(shù)組的聲明、創(chuàng)建和初始化,并給出其對(duì)應(yīng)的代碼
    2012-12-12
  • Java利用MD5加鹽實(shí)現(xiàn)對(duì)密碼進(jìn)行加密處理

    Java利用MD5加鹽實(shí)現(xiàn)對(duì)密碼進(jìn)行加密處理

    在開(kāi)發(fā)的時(shí)候,有一些敏感信息是不能直接通過(guò)明白直接保存到數(shù)據(jù)庫(kù)的。最經(jīng)典的就是密碼了。如果直接把密碼以明文的形式入庫(kù),不僅會(huì)泄露用戶(hù)的隱私,對(duì)系統(tǒng)也是極其的不厲。本文就來(lái)和大家介紹一下如何對(duì)密碼進(jìn)行加密處理,感興趣的可以了解一下
    2023-02-02
  • 解決springboot 實(shí)體類(lèi)String轉(zhuǎn)Date類(lèi)型的坑

    解決springboot 實(shí)體類(lèi)String轉(zhuǎn)Date類(lèi)型的坑

    這篇文章主要介紹了解決springboot 實(shí)體類(lèi)String轉(zhuǎn)Date類(lèi)型的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java讀寫(xiě)oracle的blob字段示例

    java讀寫(xiě)oracle的blob字段示例

    這篇文章主要介紹了java讀寫(xiě)oracle的blob字段示例,需要的朋友可以參考下
    2014-02-02
  • java private關(guān)鍵字用法實(shí)例

    java private關(guān)鍵字用法實(shí)例

    這篇文章主要介紹了java private關(guān)鍵字用法實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

麻阳| 白河县| 象州县| 潮安县| 布拖县| 分宜县| 庆元县| 北碚区| 通道| 建德市| 平凉市| 绥宁县| 黎平县| 马公市| 广灵县| 沧源| 东阳市| 广宗县| 桑日县| 会理县| 潍坊市| 穆棱市| 贵南县| 玉屏| 迁安市| 永善县| 长岭县| 兴海县| 郑州市| 绥江县| 武邑县| 昌宁县| 通辽市| 祁阳县| 广昌县| 珲春市| 墨江| 陆良县| 东明县| 阜新市| 云阳县|