陣列與List的相互轉換
阿新 • • 發佈:2019-01-03
1.List轉換為陣列
直接呼叫ArrayList中的toArray方法就可以實現。
List介面中,toArray有兩個過載的方法:
Object[] toArray();
<T> T[] toArray(T[] a);
可見toArray可以用無入參的方式呼叫,返回一個Object陣列;也可以用指定返回型別的方式呼叫,返回一個指定型別的陣列。
@Test
public void test() {
List<Object> rawList = new ArrayList();
rawList.add("0" );
rawList.add("1");
String[] arr = rawList.toArray(new String[rawList.size()]);
for(String each:arr) {
System.out.println(each);
}
}
2.陣列轉換為List
如果需要將陣列轉為List,只需要使用Arrays.asList方法即可。
@Test
public void t5() {
String[] arr = {"a","b" ,"c"};
List<String> list = Arrays.asList(arr);
list.forEach(x -> System.out.println(x));
}
需要注意的是,asList方法是利用傳入引數的型別去建立一個數組,本質上還是一個只是實現了集合的如下方法(size()、toArray()、toArray(T[])、get(int)、set(int,E)、indexOf(Object)、contains(Object))的陣列,所以用asList()裝換成的集合,只能使用如上方法,如果使用其他方法如: add(E),系統將會拋Java.lang.UnsupportedOperationException(不支援請求的操作)的異常。
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
/**
* @serial include
*/
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable