在Java中将ArrayList转换为Array
时间:2020-01-09 10:35:02 来源:igfitidea点击:
在本文中,我们将介绍如何在Java中将ArrayList转换为数组。由于ArrayList的内部实现在内部使用数组存储其元素,因此ArrayList类本身提供了toArray()方法以将ArrayList转换为数组。有两个重载的toArray()方法。
- toArray()–以正确的顺序返回包含此列表中所有元素的数组。返回的数组将是"安全的",因为此列表不保留对其的引用。返回的数组的类型为Object。
- toArray(T [] a)–以正确的顺序返回包含此列表中所有元素的数组。返回数组的运行时类型是指定数组的运行时类型。
尽管在Java中使用这些方法将ArrayList转换为数组的一个问题是,存储对象的引用在ArrayList和转换后的数组之间共享。对任何存储对象的任何修改也将反映在其他数据结构中。
另一种选择是不使用任何方法手动进行转换。参见示例。
首先,我们将看到一个toArray()方法的示例,其中显示了将ArrayList转换为数组,然后显示了反映的修改。为此,我们必须将自定义对象存储在ArrayList中,所以这是一个对象存储在ArrayList中的类。
public class Employee{
private int empId;
private String empName;
private int age;
Employee(int empId, String empName, int age){
this.empId = empId;
this.empName = empName;
this.age = age;
}
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return getEmpId() + " " + getEmpName() + " " + getAge();
}
}
使用toArray(T [] a)方法将ArrayList转换为数组
在这里,我们有一个ArrayList存储类型Employee的对象。然后将此ArrayList转换为数组。然后,以与在数组中修改对象相同的方式修改ArrayList中的对象。如我们所见,这两个更改都反映在ArrayList和array中。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
List<Employee> empList = new ArrayList<Employee>();
empList.add(new Employee(1, "Zhiang", 34));
empList.add(new Employee(2, "Marie", 23));
empList.add(new Employee(3, "Amy", 31));
empList.add(new Employee(4, "Robbie", 45));
// creating array of same size as list
Employee[] empArr = new Employee[empList.size()];
// Converting ArrayList to array
empArr = empList.toArray(empArr);
System.out.println("Employees- " + Arrays.toString(empArr));
empList.get(3).setEmpName("Hyman");
empArr[1].setAge(45);
System.out.println("After modifications");
System.out.println("List elements-- " + empList);
System.out.println("Employees- " + Arrays.toString(empArr));
}
}
输出:
Employees- [1 Zhiang 34, 2 Marie 23, 3 Amy 31, 4 Robbie 45] After modifications List elements-- [1 Zhiang 34, 2 Marie 45, 3 Amy 31, 4 Hyman 45] Employees- [1 Zhiang 34, 2 Marie 45, 3 Amy 31, 4 Hyman 45]
使用toArray()方法将ArrayList转换为数组
import java.util.ArrayList;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
List<String> carList = new ArrayList<String>();
carList.add("Audi");
carList.add("Jaguar");
carList.add("BMW");
carList.add("Mini Cooper");
Object[] carArr = carList.toArray();
for(Object car : carArr) {
System.out.println("Car- " + car);
}
}
}
如我们所见,转换后的数组是Object类型的,这是使用此方法的缺点。
在没有任何API方法的情况下将ArrayList转换为数组
我们还可以通过迭代ArrayList然后将元素分配给array来将ArrayList转换为Java中的数组。
public class ListToArray {
public static void main(String[] args) {
List<String> carList = new ArrayList<String>();
carList.add("Audi");
carList.add("Jaguar");
carList.add("BMW");
carList.add("Mini Cooper");
// creating array of same size as list
String[] carArr = new String[carList.size()];
// iterate list and assign values to array
for(int i =0; i < carList.size(); i++){
carArr[i] = carList.get(i);
}
System.out.println("Cars- " + Arrays.toString(carArr));
}
}

