亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、前言

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

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

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

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

1、toArray()方法

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

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

2、Stream流的toArray()方法

通過Stream流的toArray()方法,傳入?yún)?shù)是對應(yīng)對象的構(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類下的,該方法說明如下所示:

/**
 * 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ù)式接口,該接口對應(yīng)一個(gè)方法引用,作用是創(chuàng)建一個(gè)新的指定類型和長度的數(shù)組,因此我們傳入的參數(shù)就是一個(gè)Integer[]數(shù)組的構(gòu)造方法的方法引用,最終得到的也就是一個(gè)Integer[]數(shù)組。

3、for循環(huán)

過于簡單,不再贅述。

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

1、使用Arrays.asList()

該方法通過傳入一個(gè)對象數(shù)組,最后轉(zhuǎn)換為一個(gè)對象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()

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

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

3、使用Stream中的Collector

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

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

4、for循環(huán)

過于簡單,不再贅述。

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

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

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

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

通過Stream流執(zhí)行轉(zhuǎn)換,如List<Integer>轉(zhuǎn)換為int[],通過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)

過于簡單,不再贅述。

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

1、Stream流轉(zhuǎn)換

以int[]數(shù)組來舉例,通過Stream流的mapToObj()方法先將int[]數(shù)組中每個(gè)int值轉(zhuǎn)換為Integer包裝類,再通過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)是最簡單、好用的方式,不再贅述。

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

因?yàn)?toArray() 方法的參數(shù)是范型對象,而 int 是標(biāo)準(zhǔn)數(shù)據(jù)類型??梢杂?nbsp;Interger[]來實(shí)現(xiàn)

總結(jié)

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

相關(guān)文章

  • java-collection中的null,isEmpty用法

    java-collection中的null,isEmpty用法

    這篇文章主要介紹了java-collection中的null,isEmpty用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java SpringBoot整合Canal實(shí)現(xiàn)數(shù)據(jù)同步方式

    Java SpringBoot整合Canal實(shí)現(xiàn)數(shù)據(jù)同步方式

    本文介紹了如何開啟和配置Canal,以及如何在Spring Boot中集成Canal,Canal是一種基于MySQL的數(shù)據(jù)庫變更解析工具,可以將數(shù)據(jù)庫的變更事件發(fā)送到Kafka、RocketMQ等消息隊(duì)列中,用于數(shù)據(jù)分析和挖掘
    2025-02-02
  • Spring MVC處理方法返回值過程解析

    Spring MVC處理方法返回值過程解析

    這篇文章主要介紹了Spring MVC處理方法返回值過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Idea Jrebel 報(bào)錯(cuò):Cannot reactivate,offline seat in use

    Idea Jrebel 報(bào)錯(cuò):Cannot reactivate,offline 

    本文主要介紹了Idea Jrebel 報(bào)錯(cuò):Cannot reactivate,offline seat in use,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring循環(huán)依賴的三種方式(推薦)

    Spring循環(huán)依賴的三種方式(推薦)

    本篇文章主要介紹了Spring循環(huán)依賴的三種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring?Initializr只能創(chuàng)建為Java?17版本以上的問題解決

    Spring?Initializr只能創(chuàng)建為Java?17版本以上的問題解決

    這篇文章主要給大家介紹了關(guān)于Spring?Initializr只能創(chuàng)建為Java?17版本以上問題的解決辦法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • SpringBoot集成mybatis連接oracle的圖文教程

    SpringBoot集成mybatis連接oracle的圖文教程

    這篇文章主要介紹了Spring Boot集成mybatis連接oracle的圖文教程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java精確計(jì)算BigDecimal類詳解

    Java精確計(jì)算BigDecimal類詳解

    這篇文章主要介紹了Java精確計(jì)算BigDecimal類的使用方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Spring Boot如何支持嵌入式Servlet容器

    Spring Boot如何支持嵌入式Servlet容器

    這篇文章主要介紹了Spring Boot如何支持嵌入式Servlet容器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java 獲取日期的幾天前,幾個(gè)月前和幾年前的實(shí)例

    java 獲取日期的幾天前,幾個(gè)月前和幾年前的實(shí)例

    下面小編就為大家?guī)硪黄猨ava 獲取日期的幾天前,幾個(gè)月前和幾年前的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論