用Java将数组转换为ArrayList
时间:2020-01-09 10:35:02 来源:igfitidea点击:
在如何在Java中将ArrayList转换为Array的文章中,我们已经看到了进行该转换的不同方法。这篇文章是关于如何在Java中将数组转换为ArrayList的另一种方式。
在Java中将数组转换为ArrayList的选项
- 使用Arrays.asList()方法。参见示例。
- 使用Collections.addAll()方法。参见示例。
- 从Java 8开始,我们可以使用Java Stream API在Java中将数组转换为ArrayList。参见示例。
- 手动执行操作而不使用任何API方法。参见示例。
使用Arrays.asList()方法
使用Arrays.asList()方法可以将数组转换为ArrayList。此方法返回的列表由数组支持,因此List中的任何更改也将反映在数组中。
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
// Converting array to arraylist
List<String> carList = Arrays.asList(carArray);
System.out.println("List Elements- " + carList);
// changing element in List
carList.set(1, "Mercedes");
System.out.println("Array Elements- " + Arrays.toString(carArray));
}
}
输出:
List Elements- [Audi, Jaguar, BMW, Mini Cooper] Array Elements- [Audi, Mercedes, BMW, Mini Cooper]
从输出中可以看到,当ArrayList中索引1的元素发生更改时,更改也将反映到数组中。
这种方法的另一个缺点是返回列表是固定的,我们不能在返回的列表中添加或者删除元素。任何添加或者删除元素的尝试都会抛出java.lang.UnsupportedOperationException。
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
// Converting array to arraylist
List<String> carList = Arrays.asList(carArray);
System.out.println("List Elements- " + carList);
// trying to remove element
carList.remove("Audi");
System.out.println("Array Elements- " + Arrays.toString(carArray));
}
}
输出:
List Elements- [Audi, Jaguar, BMW, Mini Cooper] Exception in thread "main" java.lang.UnsupportedOperationException: remove at java.base/java.util.Iterator.remove(Iterator.java:102) at java.base/java.util.AbstractCollection.remove(AbstractCollection.java:299) at com.theitroad.ArrayToList.main(ArrayToList.java:14)
如果需要通过将数组转换为ArrayList来修改列表,则应使用返回的列表创建一个新的ArrayList。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
// Converting array to arraylist
List<String> carList = new ArrayList<String>(Arrays.asList(carArray));
System.out.println("List Elements- " + carList);
// changing element in List
carList.remove("Audi");
System.out.println("Array Elements- " + Arrays.toString(carArray));
System.out.println("List Elements- " + carList);
}
}
输出:
List Elements- [Audi, Jaguar, BMW, Mini Cooper] Array Elements- [Audi, Jaguar, BMW, Mini Cooper] List Elements- [Jaguar, BMW, Mini Cooper]
如通过创建新的ArrayList从输出中看到的那样,我们可以在结构上对其进行修改,现在更改也不会反映到数组中。
使用Collections.addAll()方法
我们还可以使用Collections.addAll()方法将数组转换为Java中的ArrayList。我们需要将List和array作为参数传递给此方法。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
List<String> carList = new ArrayList<String>();
Collections.addAll(carList, carArray);
System.out.println("List Elements- " + carList);
}
}
输出:
List Elements- [Audi, Jaguar, BMW, Mini Cooper]
Java Stream API的collect()方法
从Java 8开始,我们还可以在Java Stream API中使用收集器将数组转换为Java中的ArrayList。
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ArrayToList {
public static void main(String[] args) {
String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
List<String> carList = Stream.of(carArray).collect(Collectors.toList());
System.out.println("List Elements- " + carList);
}
}
输出:
List Elements- [Audi, Jaguar, BMW, Mini Cooper]
不使用任何API方法
我们也可以通过编写自己的逻辑而不是使用任何API方法来将数组转换为ArrayList。它仅需要一个简单的for循环,我们需要在其中将数组的迭代元素添加到ArrayList中。
import java.util.ArrayList;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
List<String> carList = new ArrayList<String>();
for(String car : carArray) {
carList.add(car);
}
System.out.println("List Elements- " + carList);
}
}
输出:
List Elements- [Audi, Jaguar, BMW, Mini Cooper]

