我们常常需要在ArrayList和Arrays之间转换,即在集合和数组间转换,接下来就谈谈这个内容。
ArrayList转化为数组(array)
ArrayList有个方法叫toArray() ,可以将ArrayList转化为数组
下面用一个例子来演示:
List<String> list = new ArrayList<String>();
list.add("India");
list.add("Switzerland");
list.add("Italy");
list.add("France");
String [] countries = list.toArray(new String[list.size()]);
这样我们可以使用泛型定义任何一种类型的ArrayList转化为array,代码如下:
List<T> list = new ArrayList<T>();
T [] countries = list.toArray(new T[list.size()]);
数组(array)转化为ArrayList
数组可以使用asList()方法,将数组转化为ArrayList()
下面用一个例子来演示:
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
...
String[] countries = {"India", "Switzerland", "Italy", "France"};
List list = Arrays.asList(countries);
System.out.println("ArrayList of Countries:" + list);
这里转化后要注意:此时的list对象是不可改变的,它不是一个java.util.ArrayList类。当你调用Arrays.asList()时,它返回的是 java.util.Arrays$ArrayList,这是一个不可变集合,这样你是不能向它添加新值。在这种情况下如果你加入新值,则会抛出UnsupportedOperationException异常。
要解决这个问题,list对象需是一个可操作的集合,可以新建一个List对象,如下面的代码:
String[] countries = {"India", "Switzerland", "Italy", "France"};
List list = new ArrayList(Arrays.asList(countries));
System.out.println("ArrayList of Countries:" + list);