java list 数组 转换
来源:互联网 发布:Ubuntu Gnome 16.04.3 编辑:程序博客网 时间:2024/05/18 15:55
说明
平常经常会用到数组、list的相互转换,但一直没有认证研究,尤其为什么Arrays.asList返回的list不能增加、删除元素,今天彻底搞懂了。
数组转list
Arrays.asList(T… a)
数组转list,使用Arrays.asList(T… a)方法
//数组转list String[] players={"kobe","t-mac","cp3"}; //Arrays.asList返回的list是固定大小的,不能add、remove操作 List<String> noList = Arrays.asList(players);
注意,Arrays.asLit()返回的list是固定大小的,不能执行增加、删除操作。所以通常的做法是
List<String> yesList= new ArrayList<String>(Arrays.asList(players));
Arrays.asList返回的list为什么不能增加、删除元素?
查看源码
Arrays.javapublic static <T> List<T> asList(T... a) { return new ArrayList<>(a); }
这里用到了ArrayList,不可思议了,因为Arraylist是可以增加、删除元素的呀!为什么这里却不能?继续查看源码发现这里的ArrayList原来是Arrays的内部类ArrayList,而不是java.util.ArrayList。
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable { private static final long serialVersionUID = -2764017481108945198L; private final E[] a; ArrayList(E[] array) { if (array==null) throw new NullPointerException(); a = array; } }
Arrays$ArrayList继承自AbstractList,AbstractList的add、remove方法都抛出异常,所以不能增加、删除元素。另外,构造方法中a=array,说明,数组转换出来的list与数组,指向同一块内存。
public void add(int index, E element) { throw new UnsupportedOperationException(); }
public E remove(int index) { throw new UnsupportedOperationException(); }
list转数组
list.toArray(T[] a)
//list转数组 List<String> list2 = new ArrayList<String>(); list2.add("kobe"); list2.add("t-mac"); list2.add("cp3"); String[] arr2 = list2.toArray(new String[list2.size()]);
0 0
- java list 数组 转换
- Java 数组 List 转换
- Java 数组转换为List
- java 数组和List转换
- java list 和数组转换
- java 数组 List 相互转换
- Java 字符串数组转换为List数组
- JAVA 数组转换成List及List转换成数组
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Java中List转换为数组,数组转List
- Ext JS中如何从grid页面取得cloumns中的数据
- bzoj 1202 [HNOI2005]狡猾的商人
- windows彻底删除服务
- alertView的简单封装
- Action属性值
- java list 数组 转换
- bzoj 1610: [Usaco2008 Feb]Line连线游戏(计算几何)
- STM32之GPIO
- 策略模式与简单工厂模式的区别
- 【jQuery】关于jQuery中$(function() {});
- CNN应用之性别、年龄识别
- C++中智能指针的设计和使用
- 搜狗输入法的截屏功能
- C++ Primer 学习笔记_102_特殊工具与技术 --运行时类型识别[续]