Java中int[]與ArrayList<>數(shù)組轉(zhuǎn)換方法詳解
前言
在 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[] -> ArrayList<Integer>: [1, 2, 3, 4, 5] ArrayList<Integer> -> 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,代碼更簡潔。 - 對性能要求高的場景,可以選擇手動遍歷。
- 如果使用 Java 8 或更高版本,優(yōu)先使用
- 核心操作:
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學院整理,需要的朋友可以參考下2017-09-09
java小知識之查詢數(shù)據(jù)庫數(shù)據(jù)的元信息
這篇文章主要給大家介紹了關(guān)于java小知識之查詢數(shù)據(jù)庫數(shù)據(jù)的元信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2021-10-10
java中hashCode方法與equals方法的用法總結(jié)
總的來說,Java中的集合(Collection)有兩類,一類是List,再有一類是Set。前者集合內(nèi)的元素是有序的,元素可以重復;后者元素無序,但元素不可重復2013-10-10
對Java字符串與整形、浮點類型之間的相互轉(zhuǎn)換方法總結(jié)
今天小編就為大家分享一篇對Java字符串與整形、浮點類型之間的相互轉(zhuǎn)換方法總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
IDEA生成patch和使用patch的方法實現(xiàn)
比如你本地修復的 bug,需要把增量文件發(fā)給客戶,很多場景下大家都需要手工整理修改的文件,并整理好目錄,這個很麻煩,那有沒有簡單的技巧呢?本文主要介紹了IDEA生成patch和使用patch的方法實現(xiàn),感興趣的可以了解一下2023-08-08

