1.定义
-
1.一种线性表数据结构;
-
2.连续的内存空间存储相同类型的数据;
-
1. 随机访问
-
2.让数组的很多操作变得非常低效,比如要想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作
-
2.基本方法解读
-
1. 插入: 向数组array的第k个位置插入一个新元素
-
1. 如果数组中的数据有序: 插入新元素之后,需要搬移k之后的数据
-
2. 如果数组中的数据无序: 直接将第k位数据搬移到数组最后,把新的元素直接放入第k个位置
-
-
2. 删除: 删除数组array的第k个元素
-
1.删除第k个元素之后,需要将k后面的元素往前顺移一位
-
2.优化(JVM标记清除垃圾回收算法核心思想): 每次的删除操作,并不是真正的搬移数据,而是标记数据,当数组没有更多的空间存储数据的时候,集中执行一次真正的删除操作(搬移数据)
-
-
3. 查找
- 1.公式 array[k]=array[0]+k*size_type
3.应用
-
1. 容器类: ArrayList, Vector, CopyOnWriteArrayList
-
2. 垃圾回收: 标记清除算法
4.问题探究
-
1. 容器类 vs 数组 选择.
-
2.为什么大多数变成语言中,数组要从0开始,而不是从1开始?
-
3.ArrayList,Vector,CopyOnWriteArrayList的区别.
5.拓展
-
1.标记清除算法的缺点
-
1.效率问题: 标记和清理的效率都不高,但只有少量垃圾产生时会很高效
-
2.空间问题: 会产生不连续的内存空间碎片
-
网友评论