java中l(wèi)ist和數(shù)組互相轉(zhuǎn)換的一些方法總結(jié)
在Java中,List 和 數(shù)組(Array) 之間的轉(zhuǎn)換是一個常見的操作。由于它們是不同的數(shù)據(jù)結(jié)構(gòu),Java提供了一些方法來在它們之間進行轉(zhuǎn)換。我們會從List到數(shù)組和數(shù)組到List兩種情況分別討論。
1. List 轉(zhuǎn) 數(shù)組
假設(shè)你有一個 `List` 類型的對象,想要將其轉(zhuǎn)換為一個數(shù)組。你可以使用 List`類的 toArray()方法。
(a) List 轉(zhuǎn) 數(shù)組(Object類型)
最常見的轉(zhuǎn)換是將一個 `List` 轉(zhuǎn)換為一個普通的對象數(shù)組 `Object[]`,方法如下:
import java.util.List;
import java.util.ArrayList;
public class ListToArrayExample {
public static void main(String[] args) {
// 創(chuàng)建一個List
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
// 將List轉(zhuǎn)換為數(shù)組(Object類型)
Object[] array = list.toArray();
// 輸出結(jié)果
for (Object obj : array) {
System.out.println(obj);
}
}
}在這個例子中,`list.toArray()` 返回的是一個 `Object[]` 類型的數(shù)組。此時數(shù)組的元素類型是 `Object`,如果需要更具體的類型,可以強制轉(zhuǎn)換。
(b) List 轉(zhuǎn) 數(shù)組(指定類型)
如果你知道 List 中存儲的是某個具體類型的元素(比如 `String`),你可以使用 `toArray(T[] a)` 方法來指定數(shù)組的類型,從而避免轉(zhuǎn)換時的強制類型轉(zhuǎn)換:
import java.util.List;
import java.util.ArrayList;
public class ListToArrayExample {
public static void main(String[] args) {
// 創(chuàng)建一個List
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
// 將List轉(zhuǎn)換為數(shù)組(指定類型)
String[] array = list.toArray(new String[0]);
// 輸出結(jié)果
for (String str : array) {
System.out.println(str);
}
}
}在這個例子中,list.toArray(new String[0]) 生成了一個類型為 String[]的數(shù)組。new String[0]表示傳入的數(shù)組大小,實際上該數(shù)組的大小會根據(jù) List 的元素數(shù)自動調(diào)整。
(c) 對于更復(fù)雜的 List 類型
如果你的 List 中包含自定義類型(比如一個 `Person` 類),轉(zhuǎn)換的方法和上述類似:
import java.util.List;
import java.util.ArrayList;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ", " + age;
}
}
public class ListToArrayExample {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
list.add(new Person("Alice", 30));
list.add(new Person("Bob", 25));
// 將List轉(zhuǎn)換為Person類型的數(shù)組
Person[] array = list.toArray(new Person[0]);
// 輸出結(jié)果
for (Person person : array) {
System.out.println(person);
}
}
}2. 數(shù)組 轉(zhuǎn) List
如果你有一個數(shù)組,想要將其轉(zhuǎn)換為一個 `List`,你可以通過 `Arrays.asList()` 方法來實現(xiàn)。
(a) 數(shù)組 轉(zhuǎn) List(基本數(shù)據(jù)類型)
對于一個簡單的數(shù)組(如 `int[]` 或 `String[]`),你可以這樣做:
import java.util.Arrays;
import java.util.List;
public class ArrayToListExample {
public static void main(String[] args) {
// 創(chuàng)建一個數(shù)組
String[] array = {"A", "B", "C"};
// 將數(shù)組轉(zhuǎn)換為List
List<String> list = Arrays.asList(array);
// 輸出結(jié)果
for (String str : list) {
System.out.println(str);
}
}
}(b) 數(shù)組 轉(zhuǎn) List(原始類型數(shù)組)
注意,`Arrays.asList()` 方法對于原始類型數(shù)組(如 `int[]`, `double[]` 等)并不會返回一個 `List<Integer>` 或 `List<Double>` 等類型的 `List`,而是會返回一個 `List<int[]>` 類型的 List。要避免這個問題,你需要將原始類型數(shù)組包裝成相應(yīng)的包裝類數(shù)組,然后再使用 `Arrays.asList()`。
import java.util.Arrays;
import java.util.List;
public class ArrayToListExample {
public static void main(String[] args) {
// 創(chuàng)建一個int數(shù)組
int[] array = {1, 2, 3};
// 將int數(shù)組包裝為Integer數(shù)組
Integer[] boxedArray = Arrays.stream(array).boxed().toArray(Integer[]::new);
// 將Integer數(shù)組轉(zhuǎn)換為List
List<Integer> list = Arrays.asList(boxedArray);
// 輸出結(jié)果
for (Integer num : list) {
System.out.println(num);
}
}
}(c) 數(shù)組 轉(zhuǎn) List(自定義對象數(shù)組)
如果你有一個自定義類型的數(shù)組,使用 `Arrays.asList()` 同樣適用:
import java.util.Arrays;
import java.util.List;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ", " + age;
}
}
public class ArrayToListExample {
public static void main(String[] args) {
// 創(chuàng)建一個Person類型的數(shù)組
Person[] array = {new Person("Alice", 30), new Person("Bob", 25)};
// 將數(shù)組轉(zhuǎn)換為List
List<Person> list = Arrays.asList(array);
// 輸出結(jié)果
for (Person person : list) {
System.out.println(person);
}
}
}3. 注意事項
(a) `Arrays.asList()` 的限制
- 使用 `Arrays.asList()` 創(chuàng)建的 List 是一個 **固定大小 的 List,這意味著你不能向 List 中添加或刪除元素。如果試圖進行這樣的操作,會拋出 `UnsupportedOperationException`。
例如:
List<String> list = Arrays.asList("A", "B", "C");
list.add("D"); // 運行時拋出 UnsupportedOperationException如果你需要一個可修改的 List,應(yīng)該將其包裝在一個新的 `ArrayList` 中:
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
list.add("D"); // 現(xiàn)在可以修改(b) 通過 `toArray()` 方法進行類型轉(zhuǎn)換
如果 List 的類型不是你想要的類型(例如 List 存儲了類型為 `Object` 的元素),可以在進行轉(zhuǎn)換時強制類型轉(zhuǎn)換。例如:
Object[] objArray = list.toArray(); String[] strArray = (String[]) objArray; // 強制轉(zhuǎn)換為 String[]
(c) 對于原始類型數(shù)組
Java 沒有直接將原始類型數(shù)組(如 `int[]`, `double[]`)轉(zhuǎn)換為 List 的方法。你可以先將原始類型數(shù)組轉(zhuǎn)換為包裝類數(shù)組,然后再用 `Arrays.asList()` 方法轉(zhuǎn)換成 List。例如:
int[] array = {1, 2, 3};
Integer[] boxedArray = Arrays.stream(array).boxed().toArray(Integer[]::new);
List<Integer> list = Arrays.asList(boxedArray);總結(jié)
- List 轉(zhuǎn) 數(shù)組:使用 `toArray()` 方法。對于類型化的 List,推薦使用 `toArray(T[] a)` 方法,這樣可以避免不必要的類型轉(zhuǎn)換。
- 數(shù)組 轉(zhuǎn) List:使用 `Arrays.asList()` 方法,但要注意原始類型數(shù)組的特殊情況(它們會被轉(zhuǎn)換為一個包含數(shù)組的 List),并且返回的 List 是固定大小的,不能進行添加或刪除元素的操作。
到此這篇關(guān)于java中l(wèi)ist和數(shù)組互相轉(zhuǎn)換的一些方法的文章就介紹到這了,更多相關(guān)java list和數(shù)組互相轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置的教程
這篇文章主要介紹了Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Java中EnumMap和EnumSet枚舉操作類的簡單使用詳解
這篇文章主要介紹了Java中EnumMap和EnumSet枚舉操作類的簡單使用詳解,EnumMap是Map接口的一種實現(xiàn),專門用于枚舉類型的鍵,所有枚舉的鍵必須來自同一個枚舉?EnumMap不允許鍵為空,允許值為空,需要的朋友可以參考下2023-11-11
Java中實現(xiàn)高清圖片壓縮的兩種方案(最新推薦)
文章首先介紹了Java中進行高清圖片壓縮的基本方法,包括使用Java標(biāo)準(zhǔn)庫ImageIO和第三方庫ApacheCommonsCompress,通過示例代碼展示了如何調(diào)整圖像質(zhì)量和使用第三方工具來壓縮圖片文件,感興趣的朋友跟隨小編一起看看吧2025-01-01
解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題
這篇文章主要介紹了解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java利用Map實現(xiàn)計算文本中字符個數(shù)
這篇文章主要為大家詳細介紹了Java如何利用Map集合實現(xiàn)計算文本中字符個數(shù),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-08-08
深入Spring Boot之ClassLoader的繼承關(guān)系和影響
這篇文章主要介紹了深入Spring Boot之ClassLoader的繼承關(guān)系和影響,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06

