public <T> T[] toArray(T[] a) { if (a.length < size) // Make a new array of a's runtime type, but my contents: return (T[]) Arrays.copyOf(elementData, size, a.getClass()); System.arraycopy(elementData, 0, a, 0, size); if (a.length > size) a[size] = null; return a; }
如果传入数组的长度小于size,返回一个新的数组,大小为size,类型与传入数组相同。所传入数组长度与size相等,则将elementData复制到传入数组中并返回传入的数组。若传入数组长度大于size,除了复制elementData外,还将把返回数组的第size个元素置为空。
其中:elementData存储ArrayList内的元素,size表示它包含的元素的数量,都是ArrayList的属性。
elementData这个属性需要特别说明一下,Java 8 中是这样定义的
transient Object[] elementData; private int size;
JDK1.6版本中elementData是私有的,不知道为什么现在不是了,有知道的朋友可以解答下。
这里我主要解释的是transient关键字。Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
相关推荐
根据arraylist源码分析,自己编写了一个类似于arraylist集合的代码
ArrayList的源码,写了一些自己的分析,包括jdk1.8的新特性
本资源根据个人学习和总结,主要介绍Java中ArrayList扩容机制源码的解析,主要包含文字和代码等内容,以源码的形式进行分析,详细介绍了ArrayList扩容机制的整个流程,特此将该资源分享
使用 Add方法在 ArrayList中添加元素(添加到ArrayList末尾) arrlist.Add("第一个元素"); arrlist.Add("第二个元素"); arrlist.Add("第三个元素"); foreach (int n in new int[3] { 0, 1, 2 }) { arrlist...
主要介绍了Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析的相关资料,需要的朋友可以参考下
基于jdk1.8 的ArrayList的源码分析 前言:一说到ArrayList的大家可能立马想到的就是:有序、可重复、查找快但是增删慢、线程不安全。但是具体的原因都不是很清楚,本文就会根据这些问题和大家一起去学习。主要会从...
ArrayList源码分析_016.pdf
ArrayList-LinkedList-源码.rar
内容概要:ArryaList的底层源码分析,时间复杂度的介绍、自动扩容机制的源码分析、add方法、remove方法的底层源码深度解析、modcount的作用、相关数据结构的分析、介绍和比较。 适用人群:JavaSE初学者,对源码感...
详细介绍Java中ArrayList的使用方法以及与vector的对比
ArrayList最新源码,基于Jdk1.8
此方法是通过java提供的ArrayList方法对栈的实现;
这是我从JDK中拿出的Arraylist,Vector,LinkedList源码,自己看源码的时候弄出来的,并写了一点自己的分析,仅供源码分析者使用
反编译系统的,只是做个例子。 为了凑够20个字,我多打几个字……
源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556
计算机后端-Java-Java核心基础-第24章 集合01 14. ArrayList的源码分析.avi
JDK8的ArrayList源码文件
ArrayList源码.zip