arraylist
varyall
这个作者很懒,什么都没留下…
展开
-
ArrayList的基本工作原理详解add
ArrayList其实就是一个长度可变的数组,看源码就是知道,就是是一个Object[]。 ArrayList是unsynchronized。 因为底层由数组承载,那么需要连续的内存空间,所以空间复杂度是O(n)。 如果按下标直接去get(index)或者直接add(e)到数组的尾部,那么时间复杂度是O(1)。 如果要remove(index),或者add(index,e)那么时间复杂度为O(n)...转载 2018-05-29 01:21:14 · 183 阅读 · 0 评论 -
Java并发编程:并发容器之CopyOnWriteArrayList(转载)
Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从J...转载 2018-05-29 10:35:24 · 115 阅读 · 0 评论 -
浅谈ArrayList动态扩容
环境:eclipse,jdk1.8简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList 性能相对Vector 会好些),它实现了Serializable接口,因此它支持序列化,能够通过序列化传输(实际上...转载 2018-05-30 22:34:05 · 2373 阅读 · 0 评论 -
Arraylist动态扩容详解
ArrayList 概述ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。ArrayList不是线程安全的,只能用在单线程环境下。实现了Serializable接口,因此它支持序列化,能够通过序列化传输;实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问;实现了Cloneable接口,能被克隆。动态扩容一 初始化首先有三种方式来初始...转载 2018-05-30 22:34:57 · 480 阅读 · 0 评论 -
ArrayList Vector 扩容
ArrayList 扩容(JDK1.6):默认大小:10扩容点规则(什么时候扩容): 整除运算将容量扩展为原来的1.5倍加1, 扩容实现代码newCapacity = oldCapacity + oldCapacity/2 +1;扩容容量为1.5倍加一;存储方式:数组扩容方法:Arrays.copyOf(elementData, size);扩容序列化:ArrayList实现j...原创 2018-07-29 23:12:10 · 253 阅读 · 0 评论