JavaSE Array List 转换

JavaSE Array List 转换

标签(空格分隔): JavaSE Array List 转换


List to Array

Collection的两中方法
Object[] toArray()  
 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 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 extends AbstractList
    implements RandomAccess, java.io.Serializable
public abstract class AbstractList extends AbstractCollection implements List 
    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();
}

你可能感兴趣的:(JavaSE,JavaSE,Array,List,转换)