1. 数组是什么?
数组是一种线性表数据结构,拥有连续的内存空间存储具有相同类型的数据
面试问题纠正
数组适合查找操作,排好序的数组使用二分法时间复杂度是O(logn),数组支持随机访问,根据下表随机访问的时间复杂度是O(1)
2. ArrayList能否代替数组?
1. ArrayList底层实现就是数组,将很多数组操作细节封装起来, 2. 还有就是支持动态扩容,我们完全不用关心底层的扩容逻辑 3. 如果事先能确定需要存储的数据大小,最好指定ArrayList的大小
3.数组的删除引出JVM标记-清除算法
将可以引用的对象进行标记为存活对象,之后再执行清除没有标记的对象操作。 缺点 1. 效率不高(需要扫描全部对象标记) 2. 产生内存碎片
总结
基础数据结构,理解概念,举一反三