Java中数组转换为ArrayList
可以使用以下方法将数组转换为ArrayList:
方法1:使用Arrays.asList()方法
**语法:public static List asList(T... a)**
// 返回一个给定数组大小的固定大小的List。
// List的元素类型与数组元素类型相同。
// 它以与数组中相同的顺序返回一个包含所有元素的List。
// T代表泛型
请注意,存在数组参数和List返回值。
- 返回由指定数组支持的固定大小的列表。
- 返回的列表是可序列化的,实现了RandomAccess。
- 由于返回的List是固定大小的,因此我们无法在其中添加更多的元素,但是我们可以使用ArrayList类中定义的set(index, new Element)方法替换现有元素为新元素。
// Java程序演示将
// 数组转换为固定大小的ArrayList。
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
// 使用Arrays.asList将数组转换为ArrayList
List al = Arrays.asList(geeks);
System.out.println(al);
}
}
输出:
[Rahul,Utkarsh,Shubham,Neelam]
如果我们向转换后的列表中添加更多元素会怎样?
由于返回的List是固定大小的List,因此我们无法添加更多的元素。尝试添加更多的元素会导致UnsupportedOperationException。
请考虑以下示例。
// Java程序演示错误
// 如果我们将更多元素添加到
// 固定大小的List中。
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
// 使用Arrays.asList将数组转换为ArrayList
List al = Arrays.asList(geeks);
System.out.println(al);
// 向列表添加更多值。
al.add("Shashank");
al.add("Nishant");
System.out.println(al);
}
}
输出:
[Rahul,Utkarsh,Shubham,Neelam]
运行时错误
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at GFG.main(File.java:16)
因此,建议创建新的ArrayList并将Arrays.asList(数组引用)作为其参数(即作为ArrayList的构造函数参数)传递。
请考虑以下示例:
// Java program to demonstrate how to add
// one or more element(s) to returned
// resizable List.
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
List<String> al =
new ArrayList<String>(Arrays.asList(geeks));
System.out.println(al);
// Adding some more values to the List.
al.add("Shashank");
al.add("Nishant");
System.out.println("\nArrayList After adding two" +
" more Geeks: ");
System.out.println(al);
}
}
[Rahul, Utkarsh, Shubham, Neelam]
ArrayList After adding two more Geeks:
[Rahul, Utkarsh, Shubham, Neelam, Nishant, Shashank]```
&nbap;
方法 2:使用 Collections.addAll() 方法
语法: public static boolean addAll(Collection c, T… a)
// 将指定 collection 中的所有元素都添加到此 collection 中(可变参数)
// T 是指泛型
注意 collection 参数 c 中的元素将被插入,数组参数 a 包含要插入到 collection c 的元素。
返回类型是布尔类型。如果集合因此调用而更改,则返回 true。
如果集合 c 不支持 add 方法,则会抛出 UnsupportedOperationException 异常, 如果元素(或数组元素)中的某些方面阻止其被添加到集合 c 中,则会抛出 IllegalArgumentException 异常。
看以下例子:
// Java program to demonstrate how to
// add all elements of array to arrayList.
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
List<String> al = new ArrayList<String>();
// adding elements of array to arrayList.
Collections.addAll(al, geeks);
System.out.println(al);
}
}
输出 :
[Rahul, Utkarsh, Shubham, Neelam]
添加 null 到 list 中
注意:如果指定的 collection 或指定的数组为 null,则会抛出 NullPointerException。
// Adding null to a list
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
List<String> al = new ArrayList<String>();
Collections.addAll(null, geeks);
System.out.println(al);
}
}
添加 null 到 list 的尾部
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
List<String> al = new ArrayList<String>();
Collections.addAll(al, null);
System.out.println(al);
}
}
运行时错误
Exception in thread "main" java.lang.NullPointerException
at java.util.Collections.addAll(Collections.java:5401)
at GFG.main(File.java:11)
方法三:使用手动方法使用add()方法将数组转换为列表
如果我们不想使用Java内置方法,则可以使用此方法。这是一种手动将所有数组元素添加到列表中的方法。
语法: public boolean add(Object obj)
// 将指定元素追加到此列表的末尾。
// 返回 true。
// Java程序:使用循环中的add()方法将ArrayList转换为数组。
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
List<String> al = new ArrayList<String>();
// 将数组转换为ArrayList
for (String geek : geeks)
al.add(geek);
System.out.println(al);
}
}
输出:
[Rahul, Utkarsh, Shubham, Neelam]