欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中int[]與ArrayList<>數(shù)組轉(zhuǎn)換方法詳解

 更新時(shí)間:2025年02月24日 10:27:22   作者:飛滕人生TYF  
這篇文章主要介紹了在Java中將int[]和ArrayList進(jìn)行雙向轉(zhuǎn)換的方法,包括手動(dòng)遍歷和使用Java8?Stream?API兩種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在 Java 中,int[] 與 ArrayList<Integer> 是兩種常用的數(shù)據(jù)結(jié)構(gòu)。由于 int[] 是基本數(shù)據(jù)類型數(shù)組,而 ArrayList<Integer> 是對象集合類型,兩者的轉(zhuǎn)換需要注意類型轉(zhuǎn)換的細(xì)節(jié)。以下是完整的講解和實(shí)現(xiàn)方法。

1. int[] 轉(zhuǎn)換為 ArrayList

方法 1:使用手動(dòng)遍歷

通過遍歷數(shù)組,將每個(gè)元素逐一添加到 ArrayList<Integer> 中。

代碼實(shí)現(xiàn)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};

        // 轉(zhuǎn)換為 ArrayList
        ArrayList<Integer> list = new ArrayList<>();
        for (int num : array) {
            list.add(num);
        }

        System.out.println(list); // 輸出: [1, 2, 3, 4, 5]
    }
}

說明

  • 手動(dòng)遍歷適合任何版本的 Java。
  • 時(shí)間復(fù)雜度:O ( n ) O(n)O(n),n 是數(shù)組的長度。

方法 2:使用 Java 8 Stream

通過 Arrays.stream() 和 boxed() 方法,將 int[] 轉(zhuǎn)換為 Stream<Integer>,再收集到 ArrayList<Integer>。

代碼實(shí)現(xiàn)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};

        // 使用 Stream 轉(zhuǎn)換為 ArrayList
        ArrayList<Integer> list = Arrays.stream(array)
                                        .boxed() // 轉(zhuǎn)為 Integer 類型
                                        .collect(Collectors.toCollection(ArrayList::new));

        System.out.println(list); // 輸出: [1, 2, 3, 4, 5]
    }
}

說明

  • 適用于 Java 8 及以上版本。
  • 使用 boxed() 將基本類型 int 轉(zhuǎn)換為包裝類型 Integer。

2. ArrayList 轉(zhuǎn)換為 int[]

方法 1:使用手動(dòng)遍歷

通過遍歷 ArrayList<Integer>,逐一將元素添加到 int[] 中。

代碼實(shí)現(xiàn)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        // 轉(zhuǎn)換為 int[]
        int[] array = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            array[i] = list.get(i); // 拆箱 Integer -> int
        }

        System.out.println(Arrays.toString(array)); // 輸出: [1, 2, 3]
    }
}

說明

  • 手動(dòng)遍歷適合任何版本的 Java。
  • 通過 list.get(i) 獲取元素并自動(dòng)拆箱為 int

方法 2:使用 Java 8 Stream

通過 Stream.mapToInt() 將 ArrayList<Integer> 轉(zhuǎn)換為 int[]。

代碼實(shí)現(xiàn)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        // 使用 Stream 轉(zhuǎn)換為 int[]
        int[] array = list.stream()
                          .mapToInt(Integer::intValue) // 轉(zhuǎn)為 int 類型
                          .toArray();

        System.out.println(Arrays.toString(array)); // 輸出: [1, 2, 3]
    }
}

說明

  • 適用于 Java 8 及以上版本。
  • 使用 mapToInt() 方法完成從 Integer 到 int 的轉(zhuǎn)換。

3. 綜合示例

以下代碼實(shí)現(xiàn)了 int[] 和 ArrayList<Integer> 的雙向轉(zhuǎn)換。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // int[] 轉(zhuǎn) ArrayList<Integer>
        int[] array = {1, 2, 3, 4, 5};
        ArrayList<Integer> list = Arrays.stream(array)
                                        .boxed() // 轉(zhuǎn)換為 Integer
                                        .collect(Collectors.toCollection(ArrayList::new));
        System.out.println("int[] -> ArrayList<Integer>: " + list);

        // ArrayList<Integer> 轉(zhuǎn) int[]
        int[] newArray = list.stream()
                             .mapToInt(Integer::intValue) // 轉(zhuǎn)換為 int
                             .toArray();
        System.out.println("ArrayList<Integer> -> int[]: " + Arrays.toString(newArray));
    }
}

運(yùn)行結(jié)果

int[] -&gt; ArrayList&lt;Integer&gt;: [1, 2, 3, 4, 5]
ArrayList&lt;Integer&gt; -&gt; int[]: [1, 2, 3, 4, 5]

4. 注意事項(xiàng)自動(dòng)裝箱與拆箱:

    • 從 int 轉(zhuǎn)換為 Integer 是自動(dòng)裝箱。
    • 從 Integer 轉(zhuǎn)換為 int 是自動(dòng)拆箱。
    • 手動(dòng)遍歷時(shí),這些操作由 JVM 自動(dòng)完成。
  • null 的處理

    • 如果 ArrayList<Integer> 包含 null,在轉(zhuǎn)換為 int[] 時(shí)會拋出 NullPointerException。
    • 示例:
      ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, null, 3));
      int[] array = list.stream().mapToInt(Integer::intValue).toArray(); // 拋出 NullPointerException
      
  • 性能

    • 手動(dòng)遍歷方法比 Stream 方法稍快,適用于性能敏感場景。
    • Stream 方法代碼更簡潔,推薦在現(xiàn)代 Java 項(xiàng)目中使用。

5. 方法對比

轉(zhuǎn)換方向方法優(yōu)點(diǎn)缺點(diǎn)
int[] -> ArrayList手動(dòng)遍歷簡單、高效代碼稍顯冗長
Stream.boxed()代碼簡潔,現(xiàn)代風(fēng)格Java 8 及以上支持
ArrayList -> int[]手動(dòng)遍歷簡單、高效代碼稍顯冗長
Stream.mapToInt()代碼簡潔,現(xiàn)代風(fēng)格Java 8 及以上支持

6. 總結(jié)

  • 推薦方案
    • 如果使用 Java 8 或更高版本,優(yōu)先使用 Stream,代碼更簡潔。
    • 對性能要求高的場景,可以選擇手動(dòng)遍歷。
  • 核心操作
    • boxed():將基本類型轉(zhuǎn)換為包裝類型。
    • mapToInt():將包裝類型轉(zhuǎn)換為基本類型。

總結(jié) 

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

相關(guān)文章

  • 批量將現(xiàn)有Jar包上傳到Maven私服

    批量將現(xiàn)有Jar包上傳到Maven私服

    今天小編就為大家分享一篇關(guān)于批量將現(xiàn)有Jar包上傳到Maven私服,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Spring Aware源碼設(shè)計(jì)示例解析

    Spring Aware源碼設(shè)計(jì)示例解析

    這篇文章主要為大家介紹了Spring Aware源碼設(shè)計(jì)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Java中的Map接口實(shí)現(xiàn)類HashMap和LinkedHashMap詳解

    Java中的Map接口實(shí)現(xiàn)類HashMap和LinkedHashMap詳解

    這篇文章主要介紹了Java中的Map接口實(shí)現(xiàn)類HashMap和LinkedHashMap詳解,我們常會看到這樣的一種集合,IP地址與主機(jī)名,等,這種一一對應(yīng)的關(guān)系,就叫做映射,Java提供了專門的集合類用來存放這種對象關(guān)系的對象,需要的朋友可以參考下
    2024-01-01
  • Spring Boot使用RestTemplate消費(fèi)REST服務(wù)的幾個(gè)問題記錄

    Spring Boot使用RestTemplate消費(fèi)REST服務(wù)的幾個(gè)問題記錄

    這篇文章主要介紹了Spring Boot使用RestTemplate消費(fèi)REST服務(wù)的幾個(gè)問題記錄,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • java中關(guān)于命令執(zhí)行匯總

    java中關(guān)于命令執(zhí)行匯總

    這篇文章主要介紹了java中關(guān)于命令執(zhí)行匯總,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 使用Java visualVM監(jiān)控遠(yuǎn)程JVM的流程分析

    使用Java visualVM監(jiān)控遠(yuǎn)程JVM的流程分析

    我們經(jīng)常需要對我們的開發(fā)的軟件做各種測試, 軟件對系統(tǒng)資源的使用情況更是不可少,JDK1.6開始自帶的VisualVM就是不錯(cuò)的監(jiān)控工具,本文給大家分享使用Java visualVM監(jiān)控遠(yuǎn)程JVM的問題,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Scala實(shí)現(xiàn)冒泡排序、歸并排序和快速排序的示例代碼

    Scala實(shí)現(xiàn)冒泡排序、歸并排序和快速排序的示例代碼

    這篇文章主要介紹了Scala實(shí)現(xiàn)冒泡排序、歸并排序和快速排序的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • java秒殺之redis限流操作詳解

    java秒殺之redis限流操作詳解

    這篇文章主要為大家詳細(xì)介紹了java秒殺之redis限流操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 淺談一下maven優(yōu)缺點(diǎn)及使用和特點(diǎn)

    淺談一下maven優(yōu)缺點(diǎn)及使用和特點(diǎn)

    這篇文章主要介紹了淺談一下maven優(yōu)缺點(diǎn)及使用和特點(diǎn),一個(gè)項(xiàng)目管理工具軟件,那么maven項(xiàng)目有什么優(yōu)缺點(diǎn)呢,讓我們一起來看看吧
    2023-03-03
  • Java?lambda表達(dá)式與泛型整理總結(jié)

    Java?lambda表達(dá)式與泛型整理總結(jié)

    Lambda?表達(dá)式(lambda?expression)是一個(gè)匿名函數(shù),Lambda表達(dá)式基于數(shù)學(xué)中的λ演算得名。泛型編程,故如其名,是一個(gè)泛化的編程方式。其實(shí)現(xiàn)原理為程序員編寫一個(gè)函數(shù)/類的代碼示例,讓編譯器去填補(bǔ)出不同的函數(shù)實(shí)現(xiàn)
    2022-07-07

最新評論