Java 数组到数组列表的转换
以下方法可用于将数组转换为ArrayList :
方法1:使用Arrays.asList()方法
语法: public static List asList(T... a)
// Returns a fixed-size List as of size of given array.
// Element Type of List is of same as type of array element type.
// It returns an List containing all of the elements in this
// array in the same order.
// T represents generics
注意,有一个数组参数和List的返回值。
- 返回一个由指定数组支持的固定大小的列表。
- 返回的列表是可序列化的,并且实现了RandomAccess。
- 由于返回的列表是固定大小的,因此我们不能在其中添加更多的元素,但是我们可以使用ArrayList类中定义的set(index, new Element)方法用新元素替换现有的元素。
// Java program to demonstrate conversion of
// Array to ArrayList of fixed-size.
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
// Conversion of array to ArrayList
// using Arrays.asList
List al = Arrays.asList(geeks);
System.out.println(al);
}
}
输出:
[Rahul, Utkarsh, Shubham, Neelam]
如果我们向转换后的列表添加更多的元素呢?
由于返回的列表是固定大小的列表,我们不能添加更多的元素。尝试添加更多的元素会导致 UnsupportedOperationException。
考虑下面的例子。
// Java program to demonstrate error
// if we add more element(s) to
// a fixed-size List.
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
// Conversion of array to ArrayList
// using Arrays.asList
List al = Arrays.asList(geeks);
System.out.println(al);
// Adding some more values to the List.
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(array reference) 作为参数传递给它(即作为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;
方法二:使用Collections.addAll()方法
**Syntax: public static boolean addAll(Collection c, T... a)**
// Adds all of the specified elements to the specified collection.
// Elements to be added may be specified individually or as an array.
// T is generics
注意,有一个集合参数 c ,其中有要插入的元素,数组参数 a 包含要插入 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添加到列表 中
注:如果指定的集合或指定的数组为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
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)
方法3:使用手工方法,用add()方法转换数组
如果我们不想使用java的内置方法,我们可以使用这个方法。这是一种将所有数组元素添加到List的手动方法。
**Syntax: public boolean add(Object obj)**
// Appends the specified element to the end of this list.
// Returns true.
// Java program to convert a ArrayList to
// an array using add() in a loop.
import java.util.*;
class GFG
{
public static void main (String[] args)
{
String[] geeks = {"Rahul", "Utkarsh",
"Shubham", "Neelam"};
List<String> al = new ArrayList<String>();
// Array to ArrayList Conversion
for (String geek : geeks)
al.add(geek);
System.out.println(al);
}
}
输出:
[Rahul, Utkarsh, Shubham, Neelam]