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

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

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

前言

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

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

方法 1:使用手動遍歷

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

代碼實現(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]
    }
}

說明

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

方法 2:使用 Java 8 Stream

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

代碼實現(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:使用手動遍歷

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

代碼實現(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]
    }
}

說明

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

方法 2:使用 Java 8 Stream

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

代碼實現(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. 綜合示例

以下代碼實現(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));
    }
}

運行結(jié)果

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

4. 注意事項自動裝箱與拆箱:

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

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

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

5. 方法對比

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

6. 總結(jié)

  • 推薦方案
    • 如果使用 Java 8 或更高版本,優(yōu)先使用 Stream,代碼更簡潔。
    • 對性能要求高的場景,可以選擇手動遍歷。
  • 核心操作
    • 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)文章

  • mybatis實現(xiàn)表與對象的關(guān)聯(lián)關(guān)系_動力節(jié)點Java學院整理

    mybatis實現(xiàn)表與對象的關(guān)聯(lián)關(guān)系_動力節(jié)點Java學院整理

    這篇文章主要介紹了mybatis實現(xiàn)表與對象的關(guān)聯(lián)關(guān)系_動力節(jié)點Java學院整理,需要的朋友可以參考下
    2017-09-09
  • java小知識之查詢數(shù)據(jù)庫數(shù)據(jù)的元信息

    java小知識之查詢數(shù)據(jù)庫數(shù)據(jù)的元信息

    這篇文章主要給大家介紹了關(guān)于java小知識之查詢數(shù)據(jù)庫數(shù)據(jù)的元信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-10-10
  • Spring事務傳播機制最佳實踐

    Spring事務傳播機制最佳實踐

    Spring的事務傳播機制為我們提供了優(yōu)雅的解決方案,本文將帶您深入理解這一機制,掌握不同場景下的最佳實踐,感興趣的朋友一起看看吧
    2025-07-07
  • java中hashCode方法與equals方法的用法總結(jié)

    java中hashCode方法與equals方法的用法總結(jié)

    總的來說,Java中的集合(Collection)有兩類,一類是List,再有一類是Set。前者集合內(nèi)的元素是有序的,元素可以重復;后者元素無序,但元素不可重復
    2013-10-10
  • 對Java字符串與整形、浮點類型之間的相互轉(zhuǎn)換方法總結(jié)

    對Java字符串與整形、浮點類型之間的相互轉(zhuǎn)換方法總結(jié)

    今天小編就為大家分享一篇對Java字符串與整形、浮點類型之間的相互轉(zhuǎn)換方法總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • SpringBoot返回文件讓前端下載的幾種方式

    SpringBoot返回文件讓前端下載的幾種方式

    文章介紹了開發(fā)中文件下載的兩種常見解決方案,并詳細描述了通過后端進行下載的原理和步驟,包括一次性讀取到內(nèi)存和分塊寫入響應輸出流兩種方法,此外,還提供了從網(wǎng)絡上獲取文件和文本并下載的示例,并總結(jié)了InputStream和OutputStream的區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 詳解SpringBoot Starter作用及原理

    詳解SpringBoot Starter作用及原理

    大家都知道基于 SpringBoot 開發(fā)項目可以簡化 Spring 應用的搭建以及開發(fā)過程,提高程序員開發(fā)效率,這是由于其“約定大約配置”的策略及其自動裝配的特點,Starter 就是自動裝配的具體實現(xiàn),本文詳細介紹了SpringBoot Starter作用及原理,歡迎大家來閱讀學習
    2023-04-04
  • IDEA生成patch和使用patch的方法實現(xiàn)

    IDEA生成patch和使用patch的方法實現(xiàn)

    比如你本地修復的 bug,需要把增量文件發(fā)給客戶,很多場景下大家都需要手工整理修改的文件,并整理好目錄,這個很麻煩,那有沒有簡單的技巧呢?本文主要介紹了IDEA生成patch和使用patch的方法實現(xiàn),感興趣的可以了解一下
    2023-08-08
  • Java實現(xiàn)插入排序

    Java實現(xiàn)插入排序

    這篇文章主要介紹了Java實現(xiàn)插入排序,把一列數(shù)組按從小到大或從大到小排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java中String類常用方法總結(jié)詳解

    Java中String類常用方法總結(jié)詳解

    String類是一個很常用的類,是Java語言的核心類,用來保存代碼中的字符串常量的,并且封裝了很多操作字符串的方法。本文為大家總結(jié)了一些String類常用方法的使用,感興趣的可以了解一下
    2022-08-08

最新評論

新竹县| 涿州市| 朝阳区| 凤翔县| 自贡市| 称多县| 宜宾县| 盐城市| 福海县| 蕉岭县| 临泉县| 湘潭市| 奉节县| 若尔盖县| 绥棱县| 来凤县| 泗阳县| 电白县| 香港| 开封市| 巴林右旗| 滨州市| 雷山县| 桑日县| 固镇县| 乌苏市| 长兴县| 平定县| 铁力市| 乌拉特前旗| 惠东县| 抚远县| 尼勒克县| 平湖市| 泾川县| 平安县| 浪卡子县| 浦县| 红安县| 锦州市| 广河县|