美文网首页
ArrayList的原理

ArrayList的原理

作者: 生不悔改 | 来源:发表于2019-12-17 13:28 被阅读0次

    ArrayList的特点:

    1.一个Object类型的数组

    2.默认长度是10,每次扩容后的长度都是:原长度(10)+原长度*0.5(如果结果是小数取整)

    3.扩容后会调用copy()方法

    4.线程不安全

    新建一个ArrayList的底层就是新建一个Object的数组,默认值大小是10(JDK1.8版本),这里要注意其实实际在JDK1.8中你创建ArrayLis其实是没有长度的,只有在第一次调用ArrayList的add()方法时才会自动扩容到10,如果在加入10个元素后,在加入第11个元素的时候,ArrayList会在当前的基础上扩容0.5倍,即会在长度10扩容到15(当遇到小数时只取整数值),扩容的过程就是新建一个ArrayList然后将之前的ArrayList的元素全部调用copy()方法复制到新new的ArrayList里面。

    解决线程不安全的问题有以下三种:

    方法一:解决ArrayList线程不安全的方法一:使用Vector

                    List list = new Vector();

    方法二:解决ArrayList线程不安全的方法二:使用Collections集合工具类中的synchronizedList()

                    List list = Collections.synchronizedList(new ArrayList());

    方法三:解决ArrayList线程不安全的方法三:使用Collections集合工具类中的 CopyOnWriteArrayList()

                    List<String> list = new CopyOnWriteArrayList<String>();

    相关文章

      网友评论

          本文标题:ArrayList的原理

          本文链接:https://www.haomeiwen.com/subject/gbxsnctx.html