Java基础之:List——ArrayList & Vector
2021-03-08 23:27
标签:images mac line alt http help ansi rac element ArrayList实现了List接口,底层是一个数组,并实现了可变的功能。底层属性(transient Object[] elementData;)在序列化时,忽略该属性。 ArrayList实现了List接口,所以它可以允许出现重复值,也可以使用List中的所有方法。 ArrayList与Vector基本相同,ArrayList是线程不安全的,但比Vector效率更高。 ArrayList底层维护了一个Object类型的数组elementData。(transient Object[] elementData;) 当创建对象时,如果是用的是无参构造器public ArrayList(),则默认初始化elementData容量为0。 当添加元素时:先判断是否有足够的容量进行添加,若不够则进行扩容,调用grow()方法,若足够则直接在对应位置添加元素即可。 在使用无参构造public ArrayList()的情况下第一次扩容默认为10,之后再需要扩容的话,则扩容elementData为1.5倍,即10 + 10 / 2 = 15 若使用有参构造public ArrayList(int initialCapacity),则默认初始化elementData容量为initialCapacity。那么在第一次扩容时,则直接扩容elementData到1.5倍initialCapacity。
代码说明: public class Vector implements List Vector底层也是一个可变对象数组( protected Object[] elementData;)。 Vector是线程安全的,Vector类的操作方法都带有synchronized: public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = e; return true; } 由于Vector使用方法基本上和ArrayList没有差别,所以这里就不再赘述。 在实际开发中,使用更多的还是ArrayList,只有在确实需要线程同步安全时,才考虑使用Vector。 Java基础之:List——ArrayList & Vector 标签:images mac line alt http help ansi rac element 原文地址:https://www.cnblogs.com/SongHai/p/14191425.htmlJava基础之:List——ArrayList & Vector
ArrayList简单介绍
ArrayList底层源码分析
源码追踪
package class_ArrayList;
import java.util.ArrayList;
public class ClassTest01_Debug {
?
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
for(int i = 0 ; i
Vector简单介绍
ArrayList与Vector比较
文章标题:Java基础之:List——ArrayList & Vector
文章链接:http://soscw.com/index.php/essay/62021.html