JavaSE Array List 转换
标签(空格分隔): JavaSE Array List 转换
List to Array
Collection的两中方法
Object[] toArray()
<T> T[] toArray(T[] a)
list.toArray(new String[0])
new String[0]是和范式相结合
传递的数组长度如果大于几个长度填充null 若小于则自动扩容
代码实例
public void fun3() {
// 可以让list和array互相转换
List<String> list = new ArrayList<String>();
list.add("lucy");
list.add("rose");
list.add("jack");
list.add("tom");
// 将List转换成数组
/*
* 传递的数组参数,长度如果大于集合长度
* 就会将空白元素填充为null
* 如果长度小于集合长度
* 自动扩容数组
*/
String[] ss = list.toArray(new String[0]);
System.out.println(Arrays.toString(ss));
}
Array to List
asList();
// 可以让list和array互相转换
String[] ss = {"lisi","liuneng","zhaolaoliu","xiaobao"};
// 将数组转换成List
List<String> list = Arrays.asList(ss);
// 转换后的List不能进行增删改操作,底层结构还是数组
list.add("yadan");// 运行异常
System.out.println(list);
// 如果想操作该集合,根据这个集合创建一个新的集合
new ArrayList(list);
public void fun4() {
// 可以让list和array互相转换
String[] ss = {"lisi","liuneng","zhaolaoliu","xiaobao"};
// 将数组转换成List
List<String> list = Arrays.asList(ss);
// 转换后的List不能进行增删操作,底层结构还是数组
list.add("yadan");// 运行异常
System.out.println(list);
// 如果想操作该集合,根据这个集合创建一个新的集合
new ArrayList(list);
}
问题原因
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
public E set(int index, E element) {
throw new UnsupportedOperationException();
}
public E remove(int index) {
throw new UnsupportedOperationException();
}