ArrayList源码分析
来源:互联网 发布:java增删改查代码学生 编辑:程序博客网 时间:2024/06/06 13:05
ArrayList是基于数组实现的,可以扩展数组的长度。
private transient Object[] elementData;非线程安全的,如果需要线程安全的可以用CopyOnWriteArrayList
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable实现了RandomAccess接口,可以根据下标index访问数据
实现Cloneable,可以克隆
实现Serializable 可以序列化
默认初始容量为10,指定容量就按照指定的
知道System.arraycopy(ori,0,ori,3,3);的用法,他可以实现数组的自我复制
最大容量为Integer.MAX_VALUE
clone方法用到的也是数组的复制
两个toArray方法,无参数的用的是数组的自我复制
有参数的用的是将数组复制到参数中,如果参数数组的length大于this的数组,将参数的size位置为null,但是后面的元素没有,
可以实现数组的向下转型
public static Integer[] vectorToArray2(ArrayList<Integer> v) { Integer[] newText = (Integer[])v.toArray(new Integer[0]); return newText; }
数组扩充 每次扩充位原来的1.5倍,如果还未达到要求,就扩展传入的大小
subList
它返回原来list的从[fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的list支持的。
所以,你对原来的list和返回的list做的“非结构性修改”(non-structural changes),都会影响到彼此对方。
所谓的“非结构性修改”,是指不涉及到list的大小改变的修改。相反,结构性修改,指改变了list大小的修改。
这样就会删除原List from 到 to 的数据
list.subList(from, to).clear();
0 0
- ArrayList源码分析
- ArrayList源码分析
- ArrayList 源码分析
- ArrayList源码分析
- ArrayList LinkedList 源码分析
- ArrayList,LinkedList源码分析
- 源码分析之ArrayList
- ArrayList 源码分析
- ArrayList源码分析
- ArrayList源码分析
- ArrayList源码分析
- ArrayList源码分析
- ArrayList源码分析
- ArrayList 源码分析
- Java ArrayList源码分析
- ArrayList源码分析
- Java ArrayList 源码分析
- ArrayList的源码分析
- CodeForces 371 E.Subway Innovation(贪心)
- 安装完jekyll还需要安装的东西
- Java时间格式对照表
- JavaScript-修改this指针
- Android ArrayAdapter的使用
- ArrayList源码分析
- JavaScript继承(1)
- PHP学习路线、书单
- 优秀到不能被忽视
- 虚拟机操作(root密码, Tools,SSH,samba,vim配置)
- 暴力程序心得
- MySQL 存储过程 创建 查看 调用 删除
- 开源数据库中间件对比
- python基础 之 对象销毁(垃圾回收)