从浅到深了解ArrayList

来源:互联网 发布:app源码 带后台数据库 编辑:程序博客网 时间:2024/06/05 15:49

根据我看到的博文,摘录了可以让我们从浅到深认识ArrayList的几篇博文,其实也算不上原创,就是进行了整理,转载的直接贴链接

首先我们先了解下ArrayList的初始化,可以看这里:

ArrayList初始化

在了解完他的初始化以及对应的使用函数时,下面了解一下关于ArrayList扩容的问题:

ArrayList底层扩容

根据ArrayList的特点,分析一下他的时间复杂度等问题:

时间复杂度分析

关于ArrayList的面试题:

5道关于ArrayList的面试题

ArrayList和linkedList以及Vector的比较:

ArrayList和linkedList以及Vector的比较

这里记录了其他人踩过的一些坑:

踩过的坑

ArrayList和LinkedList的区别

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
  2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
  3. 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。

ArrayList和Vector的区别

  1. Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized),属于强同步类。因此开销就比ArrayList要大,访问要慢。正常情况下,大多数的Java程序员使用ArrayList而不是Vector,因为同步完全可以由程序员自己来控制。
  2. Vector每次扩容请求其大小的2倍空间,而ArrayList是1.5倍。
  3. Vector还有一个子类Stack.

原创粉丝点击