Java集合排序及java集合类详解(Collection、List、Ma(16)
时间:2025-07-11
时间:2025-07-11
java的集合排序
其中数组::elementData[] 是列表的实现核心属性:数组。 我们使用该数组来进行存放集合中的数据。而我们的初始化参数就是该数组构建时候的长度,即该数组的length属性就是initialCapacity 参数。 Keys:transient 表示被修饰的属性不是对象持久状态的一部分,不会自动的序列化。
第2个属性:size表示列表中真实数据的存放个数。
我们再来看一下ArrayList的构造函数,加深一下ArrayList是基于数组的理解。
从源码中可以看到默认的构造函数调用的就是带参数的构造函数: public ArrayList(int initialCapacity)
不过参数initialCapacity=10 。
我们主要看ArrayList(int initialCapacity) 这个构造函数。可以看到:
this.elementData = new Object[initialCapacity];
我们就是使用的initialCapacity 这个参数来创建一个Object数组。而我们所有的往该集合对象中存放的数据,就是存放到了这个Object数组中去了。
我们在看看另外一个构造函数的源码:
这里,我们先看size() 方法的实现形式。它的作用即是返回size属性值的大小。然后我们再看另外一个构造函数public ArrayList(Collection c) ,该构造函数的作用是把另外一个容器对象中的元素存放到当前的List 对象中。
可以看到,首先,我们是通过调用另外一个容器对象C 的方法size()来设置当前的List对象的size属性的长度大小。
接下来,就是对elementData 数组进行初始化,初始化的大小为原先容器大小的1.1倍。最后,就是通过使用容器接口中的Object[] toArray(Object[] a) 方法来把当前容器中的对象都存放到新的数组elementData 中。这样就完成了一个ArrayList 的建立。
可能大家会存在一个问题,那就是,我们建立的这个ArrayList 是使用数组来实现的,但是数组的长度一旦被定下来,就不能改变了。而我们在给ArrayList对象中添加元素的时候,却没有长度限制。这个时候,ArrayList