在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)); } }